Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56b34863 authored by Yash Upadhyay's avatar Yash Upadhyay
Browse files

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: default avatarYash Upadhyay <yupadhya@codeaurora.org>
parent b7de35c2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1589,12 +1589,13 @@ static int cam_ife_csid_disable_hw(struct cam_ife_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_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->device_enabled = 0;
	spin_unlock_irqrestore(&csid_hw->lock_state, flags);
+2 −1
Original line number Diff line number Diff line
@@ -1165,12 +1165,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);