summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorErfan Abdi <erfangplus@gmail.com>2020-03-07 02:30:30 +0330
committerMichael Bestas <mkbestas@lineageos.org>2020-05-01 18:21:38 +0300
commit597e052b916a4db0b2d8cfef59ebbae3cf1d3a7d (patch)
tree04dffe065339c0918006177099d45f9e4866513c /drivers
parent1dd5f47b1e983cdcaf64ec0be99c832c34227d99 (diff)
msm: camera_v2: Fix lavender new version
Co-authored-by: Qiwu Huang <huangqiwu@xiaomi.com> Change-Id: I3c958bd9107d9af607563145d83d26cbb296072d
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp47.c4
-rw-r--r--drivers/media/platform/msm/camera_v2/isp/msm_isp48.c18
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c28
-rw-r--r--drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c6
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
*/