diff options
| author | Shubhraprakash Das <sadas@codeaurora.org> | 2016-05-31 15:42:30 -0700 |
|---|---|---|
| committer | Kyle Yan <kyan@codeaurora.org> | 2016-06-02 16:15:00 -0700 |
| commit | 5adaa6976672ee02c91bd51255521fdcd15295a7 (patch) | |
| tree | 836fe277337e94bcfb2f6c433ece45ab2c6b446c | |
| parent | 3eea6009d363e22c84f4b88215d13b3b258c3e3e (diff) | |
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: Shubhraprakash Das <sadas@codeaurora.org>
| -rw-r--r-- | drivers/media/platform/msm/camera_v2/isp/msm_isp47.c | 13 | ||||
| -rw-r--r-- | drivers/media/platform/msm/camera_v2/isp/msm_isp48.h | 10 | ||||
| -rw-r--r-- | drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c | 4 |
3 files changed, 23 insertions, 4 deletions
diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c index d0ad44c7a276..299476cab3e0 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c @@ -669,6 +669,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); @@ -676,9 +677,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); diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp48.h b/drivers/media/platform/msm/camera_v2/isp/msm_isp48.h index a0f1c564dbbb..ccca2010105f 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp48.h +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp48.h @@ -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__ */ diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c index 8164aec27315..286ecaca129c 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c @@ -1940,6 +1940,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__); @@ -1949,8 +1951,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); |
