msm: camera: isp: shdr enable pdaf occur overflow

If we config stream in order like IMAGE/IMAGE_SHORT/
PDAF, while PDAF stream reserve, it will override
sfe_inline_shdr flag to false on csid_hw, and we
can not configure the master/slave register correctly,
so we move the common sfe_inline_shdr flag to path cfg.

CRs-Fixed: 3047943
Change-Id: Ie4a863e9aa24a142c5c4b3c90553e4a2bd92d7f3
Signed-off-by: chengxue <chengxue@codeaurora.org>
This commit is contained in:
chengxue
2021-09-26 19:44:23 +08:00
parent 627ca795c4
commit 10b575f21e
3 changed files with 5 additions and 5 deletions

View File

@@ -281,7 +281,6 @@ struct cam_ife_csid_debug_info {
* @fatal_err_detected: flag to indicate if fatal err detected * @fatal_err_detected: flag to indicate if fatal err detected
* @rx_enabled: flag to indicate if rx is enabled * @rx_enabled: flag to indicate if rx is enabled
* @tpg_configured: flag to indicate if internal_tpg is configured * @tpg_configured: flag to indicate if internal_tpg is configured
* @sfe_inline_shdr: flag to indicate if sfe is inline shdr
* @reset_awaited: flag to indicate if reset is awaited * @reset_awaited: flag to indicate if reset is awaited
* @offline_mode: flag to indicate if csid in offline mode * @offline_mode: flag to indicate if csid in offline mode
*/ */
@@ -294,7 +293,6 @@ struct cam_ife_csid_hw_flags {
bool rx_enabled; bool rx_enabled;
bool tpg_enabled; bool tpg_enabled;
bool tpg_configured; bool tpg_configured;
bool sfe_inline_shdr;
bool reset_awaited; bool reset_awaited;
bool offline_mode; bool offline_mode;
}; };

View File

@@ -2497,7 +2497,7 @@ int cam_ife_csid_ver2_reserve(void *hw_priv,
csid_hw->token = reserve->cb_priv; csid_hw->token = reserve->cb_priv;
reserve->buf_done_controller = csid_hw->buf_done_irq_controller; reserve->buf_done_controller = csid_hw->buf_done_irq_controller;
res->cdm_ops = reserve->cdm_ops; res->cdm_ops = reserve->cdm_ops;
csid_hw->flags.sfe_inline_shdr = reserve->sfe_inline_shdr; path_cfg->sfe_inline_shdr = reserve->sfe_inline_shdr;
csid_hw->flags.offline_mode = reserve->is_offline; csid_hw->flags.offline_mode = reserve->is_offline;
reserve->need_top_cfg = csid_reg->need_top_cfg; reserve->need_top_cfg = csid_reg->need_top_cfg;
@@ -2784,7 +2784,7 @@ static int cam_ife_csid_ver2_init_config_rdi_path(
path_reg->err_recovery_cfg0_addr); path_reg->err_recovery_cfg0_addr);
} }
if (csid_hw->flags.sfe_inline_shdr) if (path_cfg->sfe_inline_shdr)
cam_ife_csid_ver2_shdr_cfg(csid_hw, res->res_id); cam_ife_csid_ver2_shdr_cfg(csid_hw, res->res_id);
if (csid_hw->debug_info.debug_val & if (csid_hw->debug_info.debug_val &
@@ -3069,7 +3069,7 @@ static int cam_ife_csid_ver2_program_rdi_path(
} }
if ((csid_hw->flags.offline_mode || if ((csid_hw->flags.offline_mode ||
csid_hw->flags.sfe_inline_shdr) && path_cfg->sfe_inline_shdr) &&
(res->res_id == CAM_IFE_PIX_PATH_RES_RDI_0)) { (res->res_id == CAM_IFE_PIX_PATH_RES_RDI_0)) {
val |= path_reg->camif_irq_mask; val |= path_reg->camif_irq_mask;
path_cfg->handle_camif_irq = true; path_cfg->handle_camif_irq = true;

View File

@@ -167,6 +167,7 @@ struct cam_ife_csid_ver2_camif_data {
* the corresponding paths * the corresponding paths
* @en_secondary_evt: Enable secondary evt for this path, to notify * @en_secondary_evt: Enable secondary evt for this path, to notify
* hw manager * hw manager
* @sfe_inline_shdr: flag to indicate if sfe is inline shdr
* *
*/ */
struct cam_ife_csid_ver2_path_cfg { struct cam_ife_csid_ver2_path_cfg {
@@ -204,6 +205,7 @@ struct cam_ife_csid_ver2_path_cfg {
bool discard_init_frames; bool discard_init_frames;
bool skip_discard_frame_cfg; bool skip_discard_frame_cfg;
bool en_secondary_evt; bool en_secondary_evt;
bool sfe_inline_shdr;
}; };
struct cam_ife_csid_ver2_top_reg_info { struct cam_ife_csid_ver2_top_reg_info {