Forgot to mention explicitly: this patch is only an example, not even nearly to be considered for applying. Thanks Guennadi On Thu, 18 Apr 2013, Guennadi Liakhovetski wrote: > 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.liakhovetski@xxxxxx> > --- > 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 --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html