summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Wu <pengw@nvidia.com>2014-02-14 17:22:06 -0800
committerWinnie Hsu <whsu@nvidia.com>2014-09-26 10:49:36 -0700
commit31036901c622408e6b12be1740f781bc261ff4ee (patch)
tree4ffd9572c926bcf68ee388b8cce1d960e6afdaff
parent447dd3f018c3a63350f10e67ba5edf02c77efeba (diff)
ARM: ardbeg: enable imx135 V4L2 sensor driver
Bug 1380143 Change-Id: I9292465b0652c5287db6bbc97a08c76c1ad48484 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/337471 (cherry picked from commit e83a8827e9888f567a5859ecac6a1041edcf0db9) Reviewed-on: http://git-master/r/498937 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Matthew Pedro <mapedro@nvidia.com> Reviewed-by: Winnie Hsu <whsu@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-ardbeg-sensors.c47
1 files changed, 45 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/board-ardbeg-sensors.c b/arch/arm/mach-tegra/board-ardbeg-sensors.c
index 8fa254fb0497..e67e1f528dd4 100644
--- a/arch/arm/mach-tegra/board-ardbeg-sensors.c
+++ b/arch/arm/mach-tegra/board-ardbeg-sensors.c
@@ -184,7 +184,7 @@ static struct tegra_camera_platform_data ardbeg_camera_platform_data = {
};
static struct soc_camera_link ardbeg_soc_camera_link = {
- .bus_id = 0, /* This must match the .id of tegra_vi01_device */
+ .bus_id = 1, /* This must match the .id of tegra_vi01_device */
.add_device = ardbeg_soc_camera_add,
.del_device = ardbeg_soc_camera_del,
.module_name = "soc_camera_platform",
@@ -213,13 +213,52 @@ static void ardbeg_soc_camera_del(struct soc_camera_device *icd)
static struct platform_device ardbeg_soc_camera_device = {
.name = "soc-camera-pdrv",
- .id = 0,
+ .id = 1,
.dev = {
.platform_data = &ardbeg_soc_camera_link,
},
};
#endif
+#if IS_ENABLED(CONFIG_SOC_CAMERA_IMX135)
+static int ardbeg_imx135_power(struct device *dev, int enable)
+{
+ return 0;
+}
+
+struct imx135_platform_data ardbeg_imx135_data;
+
+static struct i2c_board_info ardbeg_imx135_camera_i2c_device = {
+ I2C_BOARD_INFO("imx135_v4l2", 0x10),
+ .platform_data = &ardbeg_imx135_data,
+};
+
+static struct tegra_camera_platform_data ardbeg_imx135_camera_platform_data = {
+ .flip_v = 0,
+ .flip_h = 0,
+ .port = TEGRA_CAMERA_PORT_CSI_A,
+ .lanes = 4,
+ .continuous_clk = 0,
+};
+
+static struct soc_camera_link imx135_iclink = {
+ .bus_id = 0, /* This must match the .id of tegra_vi01_device */
+ .board_info = &ardbeg_imx135_camera_i2c_device,
+ .module_name = "imx135_v4l2",
+ .i2c_adapter_id = 2,
+ .power = ardbeg_imx135_power,
+ .priv = &ardbeg_imx135_camera_platform_data,
+};
+
+static struct platform_device ardbeg_imx135_soc_camera_device = {
+ .name = "soc-camera-pdrv",
+ .id = 0,
+ .dev = {
+ .platform_data = &imx135_iclink,
+ },
+};
+#endif
+
static struct regulator *ardbeg_vcmvdd;
static int ardbeg_get_extra_regulators(void)
@@ -1099,6 +1138,10 @@ static int ardbeg_camera_init(void)
platform_device_register(&ardbeg_soc_camera_device);
#endif
+#if IS_ENABLED(CONFIG_SOC_CAMERA_IMX135)
+ platform_device_register(&ardbeg_imx135_soc_camera_device);
+#endif
+
return 0;
}