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

Commit 712192fe authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: isp: Change state of all CID resource to RESERVE on...

Merge "msm: camera: isp: Change state of all CID resource to RESERVE on deinit" into camera-kernel.lnx.1.0
parents 26227e27 3d9e22bd
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -414,7 +414,6 @@ static int cam_ife_csid_cid_get(struct cam_ife_csid_hw *csid_hw,
	return -EINVAL;
}


static int cam_ife_csid_global_reset(struct cam_ife_csid_hw *csid_hw)
{
	struct cam_hw_soc_info                *soc_info;
@@ -1538,8 +1537,8 @@ static int cam_ife_csid_enable_csi2(

	csid_reg = csid_hw->csid_info->csid_reg;
	soc_info = &csid_hw->hw_info->soc_info;
	CAM_DBG(CAM_ISP, "CSID:%d count:%d config csi2 rx",
		csid_hw->hw_intf->hw_idx, csid_hw->csi2_cfg_cnt);
	CAM_DBG(CAM_ISP, "CSID:%d count:%d config csi2 rx  res_id:%d",
		csid_hw->hw_intf->hw_idx, csid_hw->csi2_cfg_cnt, res->res_id);

	/* overflow check before increment */
	if (csid_hw->csi2_cfg_cnt == UINT_MAX) {
@@ -1549,7 +1548,7 @@ static int cam_ife_csid_enable_csi2(
	}

	cid_data = (struct cam_ife_csid_cid_data *)res->res_priv;

	cid_data->init_cnt++;
	res->res_state  = CAM_ISP_RESOURCE_STATE_STREAMING;
	csid_hw->csi2_cfg_cnt++;
	if (csid_hw->csi2_cfg_cnt > 1)
@@ -1640,6 +1639,7 @@ static int cam_ife_csid_disable_csi2(
{
	const struct cam_ife_csid_reg_offset      *csid_reg;
	struct cam_hw_soc_info                    *soc_info;
	struct cam_ife_csid_cid_data              *cid_data;

	if (res->res_id >= CAM_IFE_CSID_CID_MAX) {
		CAM_ERR(CAM_ISP, "CSID:%d Invalid res id :%d",
@@ -1649,11 +1649,19 @@ static int cam_ife_csid_disable_csi2(

	csid_reg = csid_hw->csid_info->csid_reg;
	soc_info = &csid_hw->hw_info->soc_info;
	CAM_DBG(CAM_ISP, "CSID:%d cnt : %d Disable csi2 rx",
		csid_hw->hw_intf->hw_idx, csid_hw->csi2_cfg_cnt);
	cid_data = (struct cam_ife_csid_cid_data *)res->res_priv;
	CAM_DBG(CAM_ISP, "CSID:%d cnt : %d Disable csi2 rx res->res_id:%d",
		csid_hw->hw_intf->hw_idx, csid_hw->csi2_cfg_cnt, res->res_id);

	if (cid_data->init_cnt)
		cid_data->init_cnt--;
	if (!cid_data->init_cnt)
		res->res_state = CAM_ISP_RESOURCE_STATE_RESERVED;

	if (csid_hw->csi2_cfg_cnt)
		csid_hw->csi2_cfg_cnt--;
	CAM_DBG(CAM_ISP, "res_id %d res_state=%d",
		res->res_id, res->res_state);

	if (csid_hw->csi2_cfg_cnt)
		return 0;
+2 −0
Original line number Diff line number Diff line
@@ -454,6 +454,7 @@ struct cam_ife_csid_tpg_cfg {
 * @cnt:              Cid resource reference count.
 * @tpg_set:          Tpg used for this cid resource
 * @is_valid_vc1_dt1: Valid vc1 and dt1
 * @init_cnt          cid resource init count
 *
 */
struct cam_ife_csid_cid_data {
@@ -464,6 +465,7 @@ struct cam_ife_csid_cid_data {
	uint32_t                     cnt;
	uint32_t                     tpg_set;
	uint32_t                     is_valid_vc1_dt1;
	uint32_t                     init_cnt;
};