msm: camera: isp: CSID Tasklet stop sequence
Handle race for tasklet stop. Changed the sequence of tasklet stop call to avoid unclocked register accesses on tasklet stop/flush. CRs-Fixed: 3010894 Change-Id: Ieec9f20db127b2bebec0bb40ec437b4eb3d3d9dd Signed-off-by: Yash Upadhyay <yupadhya@codeaurora.org>
Tento commit je obsažen v:
@@ -2878,12 +2878,12 @@ 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",
|
||||
csid_hw->hw_intf->hw_idx);
|
||||
|
||||
cam_tasklet_stop(csid_hw->tasklet);
|
||||
spin_lock_irqsave(&csid_hw->lock_state, flags);
|
||||
csid_hw->flags.device_enabled = false;
|
||||
spin_unlock_irqrestore(&csid_hw->lock_state, flags);
|
||||
|
@@ -1230,12 +1230,13 @@ 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",
|
||||
csid_hw->hw_intf->hw_idx);
|
||||
|
||||
cam_tasklet_stop(csid_hw->tasklet);
|
||||
spin_lock_irqsave(&csid_hw->spin_lock, flags);
|
||||
csid_hw->device_enabled = 0;
|
||||
spin_unlock_irqrestore(&csid_hw->spin_lock, flags);
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele