From 31036901c622408e6b12be1740f781bc261ff4ee Mon Sep 17 00:00:00 2001 From: Bryan Wu Date: Fri, 14 Feb 2014 17:22:06 -0800 Subject: [PATCH] ARM: ardbeg: enable imx135 V4L2 sensor driver Bug 1380143 Change-Id: I9292465b0652c5287db6bbc97a08c76c1ad48484 Signed-off-by: Bryan Wu 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 Reviewed-by: Winnie Hsu --- arch/arm/mach-tegra/board-ardbeg-sensors.c | 47 +++++++++++++++++++++- 1 file 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 8fa254fb049..e67e1f528dd 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; } -- 2.39.2