From edbbcb93c8f000a7cb136d27d85f24d81e1132eb Mon Sep 17 00:00:00 2001 From: Yash Upadhyay Date: Tue, 9 Jul 2024 10:23:26 +0530 Subject: [PATCH] msm: camera: common: Stopping HW before stopping tasklet Tasklet must be stopped after stopping HW. In current implementation we are stopping same tasklet both in CSID and IFE/TFE stop call. This change adds to stop both csid and ife/tfe HW first and then stopping tasklet. CRs-Fixed: 3855774 Change-Id: I93de831c45d2f61142db300140e36c17e0dd9b31 Signed-off-by: Yash Upadhyay --- .../isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c | 2 -- .../cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c | 3 --- 2 files changed, 5 deletions(-) diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c index 080b7a20f7..4b2c656ca2 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c @@ -2711,7 +2711,6 @@ static int cam_ife_csid_ver1_enable_hw(struct cam_ife_csid_ver1_hw *csid_hw) csid_hw->flags.fatal_err_detected = false; csid_hw->flags.device_enabled = true; spin_unlock_irqrestore(&csid_hw->lock_state, flags); - cam_tasklet_start(csid_hw->tasklet); return rc; @@ -2890,7 +2889,6 @@ static int cam_ife_csid_ver1_disable_hw( cam_io_w_mb(0, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->top_irq_mask_addr); - cam_tasklet_stop(csid_hw->tasklet); rc = cam_ife_csid_disable_soc_resources(soc_info); if (rc) CAM_ERR(CAM_ISP, "CSID:%d Disable CSID SOC failed", diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c index ed4680a92a..4e6bcef39c 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c @@ -1343,7 +1343,6 @@ static int cam_tfe_csid_enable_hw(struct cam_tfe_csid_hw *csid_hw) csid_hw->fatal_err_detected = false; csid_hw->device_enabled = 1; spin_unlock_irqrestore(&csid_hw->spin_lock, flags); - cam_tasklet_start(csid_hw->tasklet); if (csid_hw->pxl_pipe_enable ) { path_data = (struct cam_tfe_csid_path_cfg *) @@ -1415,8 +1414,6 @@ static int cam_tfe_csid_disable_hw(struct cam_tfe_csid_hw *csid_hw) cam_io_w_mb(0, soc_info->reg_map[0].mem_base + csid_reg->cmn_reg->csid_top_irq_mask_addr); - cam_tasklet_stop(csid_hw->tasklet); - rc = cam_tfe_csid_disable_soc_resources(soc_info); if (rc) CAM_ERR(CAM_ISP, "CSID:%d Disable CSID SOC failed",