It looks to me the change to the platform code is to move the I2C board info registration into 'struct soc_camera_link'. Are there any specific reason to do so? I'm assuming the original code works equally well, and lists all the i2c devices in a central place is straight forward.
On Sat, Apr 25, 2009 at 12:40 AM, Guennadi Liakhovetski <g.liakhovet...@gmx.de> wrote: > Signed-off-by: Guennadi Liakhovetski <g.liakhovet...@gmx.de> > --- > > For review __ONLY__ for now - will re-submit after I have pushed 1/8 > > arch/arm/mach-pxa/pcm990-baseboard.c | 54 +++++++++++++++++++++++++++------ > 1 files changed, 44 insertions(+), 10 deletions(-) > > diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c > b/arch/arm/mach-pxa/pcm990-baseboard.c > index 9ce1ef2..a1ae436 100644 > --- a/arch/arm/mach-pxa/pcm990-baseboard.c > +++ b/arch/arm/mach-pxa/pcm990-baseboard.c > @@ -427,25 +427,56 @@ static void pcm990_camera_free_bus(struct > soc_camera_link *link) > gpio_bus_switch = -EINVAL; > } > > -static struct soc_camera_link iclink = { > - .bus_id = 0, /* Must match with the camera ID above */ > - .query_bus_param = pcm990_camera_query_bus_param, > - .set_bus_param = pcm990_camera_set_bus_param, > - .free_bus = pcm990_camera_free_bus, > -}; > - > /* Board I2C devices. */ > static struct i2c_board_info __initdata pcm990_i2c_devices[] = { > { > /* Must initialize before the camera(s) */ > I2C_BOARD_INFO("pca9536", 0x41), > .platform_data = &pca9536_data, > - }, { > + }, > +}; > + > +static struct i2c_board_info __initdata pcm990_camera_i2c[] = { > + { > I2C_BOARD_INFO("mt9v022", 0x48), > - .platform_data = &iclink, /* With extender */ > }, { > I2C_BOARD_INFO("mt9m001", 0x5d), > - .platform_data = &iclink, /* With extender */ > + }, > +}; > + > +static struct soc_camera_link iclink[] = { > + { > + .bus_id = 0, /* Must match with the camera ID > */ > + .board_info = &pcm990_camera_i2c[0], > + .i2c_adapter_id = 0, > + .query_bus_param = pcm990_camera_query_bus_param, > + .set_bus_param = pcm990_camera_set_bus_param, > + .free_bus = pcm990_camera_free_bus, > + .module_name = "mt9v022", > + }, { > + .bus_id = 0, /* Must match with the camera ID > */ > + .board_info = &pcm990_camera_i2c[1], > + .i2c_adapter_id = 0, > + .query_bus_param = pcm990_camera_query_bus_param, > + .set_bus_param = pcm990_camera_set_bus_param, > + .free_bus = pcm990_camera_free_bus, > + .module_name = "mt9m001", > + }, > +}; > + > +static struct platform_device pcm990_camera[] = { > + { > + .name = "soc-camera-pdrv", > + .id = 0, > + .dev = { > + .platform_data = &iclink[0], > + }, > + }, { > + .name = "soc-camera-pdrv", > + .id = 1, > + .dev = { > + .platform_data = &iclink[1], > + }, > }, > }; > #endif /* CONFIG_VIDEO_PXA27x ||CONFIG_VIDEO_PXA27x_MODULE */ > @@ -501,6 +532,9 @@ void __init pcm990_baseboard_init(void) > pxa_set_camera_info(&pcm990_pxacamera_platform_data); > > i2c_register_board_info(0, ARRAY_AND_SIZE(pcm990_i2c_devices)); > + > + platform_device_register(&pcm990_camera[0]); > + platform_device_register(&pcm990_camera[1]); > #endif > > printk(KERN_INFO "PCM-990 Evaluation baseboard initialized\n"); > -- > 1.6.2.4 > > -- Cheers - eric N�����r��y����b�X��ǧv�^�){.n�+����{���bj)����w*jg��������ݢj/���z�ޖ��2�ޙ����&�)ߡ�a�����G���h��j:+v���w��٥