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

Commit 51a95ffb authored by Shubhraprakash Das's avatar Shubhraprakash Das
Browse files

msm: camera: isp: For vfe version 4.8 do not reset vbif



Do not reset vbif for vfe version 4.8 based on recommendation
from h/w team.

Change-Id: Ia31c3f10c24380d9670cd0ca83834844435e593d
CRs-Fixed: 999619
Signed-off-by: default avatarShubhraprakash Das <sadas@codeaurora.org>
parent 62fc063d
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -711,6 +711,7 @@ long msm_vfe47_reset_hardware(struct vfe_device *vfe_dev,
	uint32_t first_start, uint32_t blocking_call)
{
	long rc = 0;
	uint32_t reset;

	init_completion(&vfe_dev->reset_complete);

@@ -718,9 +719,17 @@ long msm_vfe47_reset_hardware(struct vfe_device *vfe_dev,
		vfe_dev->reset_pending = 1;

	if (first_start) {
		msm_camera_io_w_mb(0x3FF, vfe_dev->vfe_base + 0x18);
		if (msm_vfe_is_vfe48(vfe_dev))
			reset = 0x3F7;
		else
			reset = 0x3FF;
		msm_camera_io_w_mb(reset, vfe_dev->vfe_base + 0x18);
	} else {
		msm_camera_io_w_mb(0x3EF, vfe_dev->vfe_base + 0x18);
		if (msm_vfe_is_vfe48(vfe_dev))
			reset = 0x3E7;
		else
			reset = 0x3EF;
		msm_camera_io_w_mb(reset, vfe_dev->vfe_base + 0x18);
		msm_camera_io_w(0x7FFFFFFF, vfe_dev->vfe_base + 0x64);
		msm_camera_io_w(0xFFFFFEFF, vfe_dev->vfe_base + 0x68);
		msm_camera_io_w(0x1, vfe_dev->vfe_base + 0x58);
+10 −0
Original line number Diff line number Diff line
@@ -22,4 +22,14 @@ enum msm_vfe_clk_rates {
	MSM_VFE_MAX_CLK_RATES = 3,
};

#define MSM_VFE48_HW_VERSION 0x8
#define MSM_VFE48_HW_VERSION_SHIFT 28
#define MSM_VFE48_HW_VERSION_MASK 0xF

static inline int msm_vfe_is_vfe48(struct vfe_device *vfe_dev)
{
	return (((vfe_dev->vfe_hw_version >> MSM_VFE48_HW_VERSION_SHIFT) &
		MSM_VFE48_HW_VERSION_MASK) == MSM_VFE48_HW_VERSION);
}

#endif /* __MSM_ISP48_H__ */
+2 −2
Original line number Diff line number Diff line
@@ -1965,6 +1965,8 @@ int msm_isp_open_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)

	vfe_dev->hw_info->vfe_ops.core_ops.clear_status_reg(vfe_dev);

	vfe_dev->vfe_hw_version = msm_camera_io_r(vfe_dev->vfe_base);
	ISP_DBG("%s: HW Version: 0x%x\n", __func__, vfe_dev->vfe_hw_version);
	rc = vfe_dev->hw_info->vfe_ops.core_ops.reset_hw(vfe_dev, 1, 1);
	if (rc <= 0) {
		pr_err("%s: reset timeout\n", __func__);
@@ -1974,8 +1976,6 @@ int msm_isp_open_node(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
		mutex_unlock(&vfe_dev->realtime_mutex);
		return -EINVAL;
	}
	vfe_dev->vfe_hw_version = msm_camera_io_r(vfe_dev->vfe_base);
	ISP_DBG("%s: HW Version: 0x%x\n", __func__, vfe_dev->vfe_hw_version);

	vfe_dev->hw_info->vfe_ops.core_ops.init_hw_reg(vfe_dev);