diff options
author | Erfan Abdi <erfangplus@gmail.com> | 2020-03-07 02:30:30 +0330 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2020-05-01 18:21:38 +0300 |
commit | 597e052b916a4db0b2d8cfef59ebbae3cf1d3a7d (patch) | |
tree | 04dffe065339c0918006177099d45f9e4866513c /drivers | |
parent | 1dd5f47b1e983cdcaf64ec0be99c832c34227d99 (diff) |
msm: camera_v2: Fix lavender new version
Co-authored-by: Qiwu Huang <huangqiwu@xiaomi.com>
Change-Id: I3c958bd9107d9af607563145d83d26cbb296072d
Diffstat (limited to 'drivers')
4 files changed, 56 insertions, 0 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 cf9e7547d4e2..bb3cb8d4b528 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp47.c @@ -37,7 +37,11 @@ #define VFE47_STATS_BURST_LEN 3 #define VFE47_UB_SIZE_VFE0 2048 #define VFE47_UB_SIZE_VFE1 1536 +#ifdef CONFIG_MACH_XIAOMI_LAVENDER +#define VFE47_UB_STATS_SIZE 288 +#else #define VFE47_UB_STATS_SIZE 144 +#endif #define MSM_ISP47_TOTAL_IMAGE_UB_VFE0 (VFE47_UB_SIZE_VFE0 - VFE47_UB_STATS_SIZE) #define MSM_ISP47_TOTAL_IMAGE_UB_VFE1 (VFE47_UB_SIZE_VFE1 - VFE47_UB_STATS_SIZE) #define VFE47_WM_BASE(idx) (0xA0 + 0x2C * idx) diff --git a/drivers/media/platform/msm/camera_v2/isp/msm_isp48.c b/drivers/media/platform/msm/camera_v2/isp/msm_isp48.c index e3d8ecb410ff..8c085be4f4f6 100644 --- a/drivers/media/platform/msm/camera_v2/isp/msm_isp48.c +++ b/drivers/media/platform/msm/camera_v2/isp/msm_isp48.c @@ -28,7 +28,11 @@ #define MSM_VFE48_BUS_CLIENT_INIT 0xABAB #define VFE48_STATS_BURST_LEN 3 #define VFE48_UB_SIZE_VFE 2048 /* 2048 * 256 bits = 64KB */ +#ifdef CONFIG_MACH_XIAOMI_LAVENDER +#define VFE48_UB_STATS_SIZE 608 +#else #define VFE48_UB_STATS_SIZE 144 +#endif #define MSM_ISP48_TOTAL_IMAGE_UB_VFE (VFE48_UB_SIZE_VFE - VFE48_UB_STATS_SIZE) @@ -318,6 +322,19 @@ void msm_vfe48_stats_cfg_ub(struct vfe_device *vfe_dev) { int i; uint32_t ub_offset = 0, stats_burst_len; +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + uint32_t ub_size[VFE47_NUM_STATS_TYPE] = { + 80, /* MSM_ISP_STATS_HDR_BE */ + 64, /* MSM_ISP_STATS_BG */ + 64, /* MSM_ISP_STATS_BF */ + 64, /* MSM_ISP_STATS_HDR_BHIST */ + 64, /* MSM_ISP_STATS_RS */ + 64, /* MSM_ISP_STATS_CS */ + 64, /* MSM_ISP_STATS_IHIST */ + 64, /* MSM_ISP_STATS_BHIST */ + 80, /* MSM_ISP_STATS_AEC_BG */ + }; +#else uint32_t ub_size[VFE47_NUM_STATS_TYPE] = { 16, /* MSM_ISP_STATS_HDR_BE */ 16, /* MSM_ISP_STATS_BG */ @@ -329,6 +346,7 @@ void msm_vfe48_stats_cfg_ub(struct vfe_device *vfe_dev) 16, /* MSM_ISP_STATS_BHIST */ 16, /* MSM_ISP_STATS_AEC_BG */ }; +#endif stats_burst_len = VFE48_STATS_BURST_LEN; ub_offset = VFE48_UB_SIZE_VFE; diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c index 1e4a5e52d28f..d71db4c6d719 100644 --- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c +++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c @@ -239,6 +239,10 @@ int msm_sensor_match_vendor_id(struct msm_sensor_ctrl_t *s_ctrl) uint16_t temp_sid = 0; uint16_t vcmid = 0; int have_vcmid = 0; +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + uint16_t lensid = 0; + int have_lensid = 0; +#endif enum cci_i2c_master_t temp_master = MASTER_0; if (!s_ctrl) { @@ -293,6 +297,17 @@ int msm_sensor_match_vendor_id(struct msm_sensor_ctrl_t *s_ctrl) have_vcmid = 1; } +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + if (s_ctrl->sensordata->lens_id_info->lens_id_addr != 0) { + msm_camera_cci_i2c_read( + sensor_i2c_client, + s_ctrl->sensordata->lens_id_info->lens_id_addr, + &lensid, + s_ctrl->sensordata->lens_id_info->data_type); + have_lensid = 1; + } +#endif + sensor_i2c_client->cci_client->sid = temp_sid; sensor_i2c_client->cci_client->cci_i2c_master = temp_master; if (rc < 0) { @@ -318,6 +333,19 @@ int msm_sensor_match_vendor_id(struct msm_sensor_ctrl_t *s_ctrl) __func__, vcmid, s_ctrl->sensordata->vcm_id_info->vcm_id); } } +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + if (have_lensid == 1) { + if (s_ctrl->sensordata->lens_id_info->lens_id != lensid) { + pr_err("%s:match lensid if failed read lens id: 0x%x expected id 0x%x:\n", + __func__, lensid, s_ctrl->sensordata->lens_id_info->lens_id); + rc = -1; + return rc; + } else { + pr_err("%s: read lensid id: 0x%x expected id 0x%x:\n", + __func__, lensid, s_ctrl->sensordata->lens_id_info->lens_id); + } + } +#endif } pr_err("%s: read vendor id: 0x%x expected id 0x%x:\n", __func__, vendorid, s_ctrl->sensordata->vendor_id_info->vendor_id); diff --git a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c index fc2a3f37cafb..392e335f334b 100644 --- a/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c +++ b/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c @@ -1464,6 +1464,9 @@ int32_t msm_sensor_driver_probe(void *setting, slave_info->vendor_id_info = slave_info32->vendor_id_info; slave_info->vcm_id_info = slave_info32->vcm_id_info; #endif +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + slave_info->lens_id_info = slave_info32->lens_id_info; +#endif slave_info->slave_addr = slave_info32->slave_addr; slave_info->power_setting_array.size = @@ -1768,6 +1771,9 @@ CSID_TG: s_ctrl->sensordata->vendor_id_info = &(slave_info->vendor_id_info); s_ctrl->sensordata->vcm_id_info = &(slave_info->vcm_id_info); #endif +#ifdef CONFIG_MACH_XIAOMI_LAVENDER + s_ctrl->sensordata->lens_id_info = &(slave_info->lens_id_info); +#endif /* * Update eeporm subdevice Id by input eeprom name */ |