We don't know how to support pluggable camera sensors yet. This is just
an example, how support for an mt9p031 or mt9p006 camera sensor could be
added to pcm037.

not-Signed-off-by: Guennadi Liakhovetski <g.liakhovet...@gmx.de>
---
 arch/arm/mach-imx/mach-pcm037.c |   44 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c
index f138481..18ba328 100644
--- a/arch/arm/mach-imx/mach-pcm037.c
+++ b/arch/arm/mach-imx/mach-pcm037.c
@@ -36,6 +36,7 @@
 #include <linux/regulator/fixed.h>
 
 #include <media/soc_camera.h>
+#include <media/mt9p031.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -363,6 +364,22 @@ static struct i2c_board_info pcm037_i2c_devices[] = {
        }
 };
 
+static struct mt9p031_platform_data mt9p031_pdata = {
+       .target_freq = 20000000,
+       .ext_freq = 20000000,
+       .sd_pdata       = {
+               .num_regulators = ARRAY_SIZE(cam_supply),
+               .regulators = cam_supply,
+       },
+};
+
+static struct i2c_board_info pcm037_i2c2_devices[] = {
+       {
+               I2C_BOARD_INFO("mt9p031", 0x48),
+               .platform_data = &mt9p031_pdata,
+       },
+};
+
 static struct platform_device pcm037_mt9t031 = {
        .name   = "soc-camera-pdrv",
        .id     = 0,
@@ -441,9 +458,30 @@ static const struct imxmmc_platform_data sdhc_pdata 
__initconst = {
        .exit = pcm970_sdhc1_exit,
 };
 
+static struct soc_camera_async_subdev mt9p006_sd = {
+       .asd.hw = {
+               .bus_type = V4L2_ASYNC_BUS_I2C,
+               .match.i2c = {
+                       .adapter_id = 2,
+                       .address = 0x48,
+               },
+       },
+       .role = SOCAM_SUBDEV_DATA_SOURCE,
+};
+
+static struct v4l2_async_subdev *cam_subdevs[] = {
+       /* Single 1-element group */
+       &mt9p006_sd.asd,
+};
+
+/* 0-terminated array of group-sizes */
+static int cam_subdev_sizes[] = {ARRAY_SIZE(cam_subdevs), 0};
+
 struct mx3_camera_pdata camera_pdata __initdata = {
        .flags          = MX3_CAMERA_DATAWIDTH_8 | MX3_CAMERA_DATAWIDTH_10,
        .mclk_10khz     = 2000,
+       .asd            = cam_subdevs,
+       .asd_sizes      = cam_subdev_sizes,
 };
 
 static phys_addr_t mx3_camera_base __initdata;
@@ -476,8 +514,8 @@ static struct platform_device *devices[] __initdata = {
        &pcm037_flash,
        &pcm037_sram_device,
        &vcc_cam,
-       &pcm037_mt9t031,
-       &pcm037_mt9v022,
+//     &pcm037_mt9t031,
+//     &pcm037_mt9v022,
 };
 
 static const struct fb_videomode fb_modedb[] = {
@@ -677,6 +715,8 @@ static void __init pcm037_init(void)
        /* I2C adapters and devices */
        i2c_register_board_info(1, pcm037_i2c_devices,
                        ARRAY_SIZE(pcm037_i2c_devices));
+       i2c_register_board_info(2, pcm037_i2c2_devices,
+                       ARRAY_SIZE(pcm037_i2c2_devices));
 
        imx31_add_imx_i2c1(&pcm037_i2c1_data);
        imx31_add_imx_i2c2(&pcm037_i2c2_data);
-- 
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to