msm: camera: sensor changes for 7x30 v4l2
1) Add board file information to support parallel sensor
2) Add clock file entry for vfe clocks
3) Add support to use csic setting for parallel sensor
Change-Id: Ia1ac4d9e724a2264bf6f8ec2e8cf73cc4ba2be37
Signed-off-by: Sreesudhan Ramakrish Ramkumar <srramku@codeaurora.org>
Signed-off-by: Sunil Joseph <sunilj@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c
index 5f8e2ac..3973bd1 100644
--- a/arch/arm/mach-msm/board-msm7x30.c
+++ b/arch/arm/mach-msm/board-msm7x30.c
@@ -870,6 +870,13 @@
.vfe_clk_rate = 153600000,
},
},
+ {
+ .csid_core = 0,
+ .is_vpe = 1,
+ .ioclk = {
+ .vfe_clk_rate = 153600000,
+ },
+ },
};
static struct camera_vreg_t msm_7x30_back_cam_vreg[] = {
diff --git a/arch/arm/mach-msm/clock-7x30.c b/arch/arm/mach-msm/clock-7x30.c
index d5af14a..48417a4 100644
--- a/arch/arm/mach-msm/clock-7x30.c
+++ b/arch/arm/mach-msm/clock-7x30.c
@@ -2809,12 +2809,10 @@
OWN(APPS1, 26, "sdac_clk", sdac_clk, NULL),
OWN(APPS1, 26, "sdac_m_clk", sdac_m_clk, NULL),
OWN(APPS1, 8, "vfe_clk", vfe_clk, NULL),
- OWN(APPS1, 8, "vfe_clk", vfe_clk, "msm_vfe.0"),
OWN(APPS1, 8, "core_clk", vfe_clk, "footswitch-pcom.8"),
OWN(APPS1, 8, "vfe_camif_clk", vfe_camif_clk, NULL),
OWN(APPS1, 8, "vfe_mdc_clk", vfe_mdc_clk, NULL),
OWN(APPS1, 8, "vfe_pclk", vfe_p_clk, NULL),
- OWN(APPS1, 8, "vfe_pclk", vfe_p_clk, "msm_vfe.0"),
OWN(APPS1, 8, "iface_clk", vfe_p_clk, "footswitch-pcom.8"),
OWN(APPS2, 0, "core_clk", grp_3d_clk, "kgsl-3d0.0"),
@@ -2873,19 +2871,11 @@
OWN(APPS3, 6, "cam_m_clk", cam_m_clk, NULL),
OWN(APPS3, 6, "cam_clk", cam_m_clk, "4-0020"),
- OWN(APPS3, 6, "cam_clk", cam_m_clk, "4-00AC"),
- OWN(APPS3, 6, "cam_clk", cam_m_clk, "4-006C"),
OWN(APPS3, 6, "camif_pad_pclk", camif_pad_p_clk, NULL),
- OWN(APPS3, 6, "camif_pad_pclk", camif_pad_p_clk, "4-0020"),
- OWN(APPS3, 6, "camif_pad_pclk", camif_pad_p_clk, "4-00AC"),
- OWN(APPS3, 6, "camif_pad_pclk", camif_pad_p_clk, "4-006C"),
OWN(APPS3, 6, "iface_clk", camif_pad_p_clk, "qup_i2c.4"),
OWN(APPS3, 11, "csi_clk", csi0_clk, NULL),
- OWN(APPS3, 11, "csi_clk", csi0_clk, "msm_csic.0"),
OWN(APPS3, 11, "csi_vfe_clk", csi0_vfe_clk, NULL),
- OWN(APPS3, 11, "csi_vfe_clk", csi0_vfe_clk, "msm_csic.0"),
OWN(APPS3, 11, "csi_pclk", csi0_p_clk, NULL),
- OWN(APPS3, 11, "csi_pclk", csi0_p_clk, "msm_csic.0"),
OWN(APPS3, 0, "mdp_clk", mdp_clk, NULL),
OWN(APPS3, 0, "core_clk", mdp_clk, "footswitch-pcom.4"),
OWN(APPS3, 2, "core_clk", mfc_clk, "msm_vidc.0"),
@@ -2894,7 +2884,6 @@
OWN(APPS3, 2, "iface_clk", mfc_p_clk, "msm_vidc.0"),
OWN(APPS3, 2, "iface_clk", mfc_p_clk, "footswitch-pcom.5"),
OWN(APPS3, 4, "vpe_clk", vpe_clk, NULL),
- OWN(APPS3, 4, "vpe_clk", vpe_clk, "msm_vpe.0"),
OWN(APPS3, 4, "core_clk", vpe_clk, "footswitch-pcom.9"),
OWN(GLBL, 8, "core_clk", adm_clk, "msm_dmov"),
diff --git a/drivers/media/video/msm/msm_mctl.c b/drivers/media/video/msm/msm_mctl.c
index 3031e1f..35206a1 100644
--- a/drivers/media/video/msm/msm_mctl.c
+++ b/drivers/media/video/msm/msm_mctl.c
@@ -996,7 +996,8 @@
D("%s\n", __func__);
WARN_ON(pctx != f->private_data);
- strlcpy(pcaps->driver, pcam->pdev->name, sizeof(pcaps->driver));
+ strlcpy(pcaps->driver, pcam->mctl.sensor_sdev->name,
+ sizeof(pcaps->driver));
pcaps->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
return 0;
}
diff --git a/drivers/media/video/msm/msm_vfe31_v4l2.c b/drivers/media/video/msm/msm_vfe31_v4l2.c
index 1f17ebe..ea181df 100644
--- a/drivers/media/video/msm/msm_vfe31_v4l2.c
+++ b/drivers/media/video/msm/msm_vfe31_v4l2.c
@@ -3568,7 +3568,7 @@
{
struct clk *clk = NULL;
- clk = vfe31_ctrl->vfe_camif_clk[1];
+ clk = vfe31_ctrl->vfe_clk[0];
if (clk != NULL) {
switch (srctype) {
diff --git a/drivers/media/video/msm/sensors/Makefile b/drivers/media/video/msm/sensors/Makefile
index 202f79b..07cea70 100644
--- a/drivers/media/video/msm/sensors/Makefile
+++ b/drivers/media/video/msm/sensors/Makefile
@@ -13,6 +13,4 @@
obj-$(CONFIG_MT9E013) += mt9e013_v4l2.o
obj-$(CONFIG_WEBCAM_OV9726) += ov9726_v4l2.o
obj-$(CONFIG_WEBCAM_OV7692_QRD) += ov7692_qrd_v4l2.o
-ifeq ($(CONFIG_ARCH_MSM7X30),y)
- obj-$(CONFIG_VX6953) += vx6953.o
-endif
+obj-$(CONFIG_VX6953) += vx6953.o
diff --git a/drivers/media/video/msm/sensors/msm_sensor.c b/drivers/media/video/msm/sensors/msm_sensor.c
index 3da7c5d..3e8d599 100644
--- a/drivers/media/video/msm/sensors/msm_sensor.c
+++ b/drivers/media/video/msm/sensors/msm_sensor.c
@@ -316,7 +316,8 @@
s_ctrl->msm_sensor_reg->
output_settings[res].line_length_pclk;
- if (s_ctrl->sensordata->pdata->is_csic)
+ if (s_ctrl->sensordata->pdata->is_csic ||
+ !s_ctrl->sensordata->csi_if)
rc = s_ctrl->func_tbl->sensor_csi_setting(s_ctrl,
MSM_SENSOR_UPDATE_PERIODIC, res);
else
@@ -342,7 +343,8 @@
s_ctrl->curr_res = MSM_SENSOR_INVALID_RES;
s_ctrl->cam_mode = mode;
- if (s_ctrl->sensordata->pdata->is_csic)
+ if (s_ctrl->sensordata->pdata->is_csic ||
+ !s_ctrl->sensordata->csi_if)
rc = s_ctrl->func_tbl->sensor_csi_setting(s_ctrl,
MSM_SENSOR_REG_INIT, 0);
else
@@ -672,9 +674,10 @@
{
int rc = 0;
struct msm_sensor_ctrl_t *s_ctrl;
- CDBG("%s_i2c_probe called\n", client->name);
+ CDBG("%s %s_i2c_probe called\n", __func__, client->name);
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
- CDBG("i2c_check_functionality failed\n");
+ pr_err("%s %s i2c_check_functionality failed\n",
+ __func__, client->name);
rc = -EFAULT;
return rc;
}
@@ -686,19 +689,23 @@
s_ctrl->sensor_i2c_client->client->addr =
s_ctrl->sensor_i2c_addr;
} else {
+ pr_err("%s %s sensor_i2c_client NULL\n",
+ __func__, client->name);
rc = -EFAULT;
return rc;
}
s_ctrl->sensordata = client->dev.platform_data;
if (s_ctrl->sensordata == NULL) {
- pr_err("%s: NULL sensor data\n", __func__);
+ pr_err("%s %s NULL sensor data\n", __func__, client->name);
return -EFAULT;
}
rc = s_ctrl->func_tbl->sensor_power_up(s_ctrl);
- if (rc < 0)
- goto probe_fail;
+ if (rc < 0) {
+ pr_err("%s %s power up failed\n", __func__, client->name);
+ return rc;
+ }
if (s_ctrl->func_tbl->sensor_match_id)
rc = s_ctrl->func_tbl->sensor_match_id(s_ctrl);
@@ -734,7 +741,7 @@
msm_sensor_register(&s_ctrl->sensor_v4l2_subdev);
goto power_down;
probe_fail:
- pr_err("%s_i2c_probe failed\n", client->name);
+ pr_err("%s %s_i2c_probe failed\n", __func__, client->name);
power_down:
if (rc > 0)
rc = 0;