On Tuesday 10 November 2009 20:21:37 Pete Eberlein wrote: > From: Pete Eberlein <pete@xxxxxxxxxxxx> > > The s2250-board i2c module was converted to use v4l2-i2c-drv.h in > preparation for its subdev conversion. This change prevented the > s2250-loader from being initialized within the same module due to > the module_init and module_exit function definitions in v4l2-i2c-drv.h. FYI: the v4l2-i2c-drv.h header is only needed if you have to support kernels < 2.6.26. If that is not the case, then the i2c driver can be written as a regular i2c driver. See for example this driver: linux/drivers/media/video/tvp514x.c. However, I seem to remember that you told me that this driver is actually used on pre-2.6.26 kernels, so then you have no choice but to use it. > Therefore, s2250-loader is now its own module, and the header for > exporting s2250-loader functions is no longer needed. > > The s2250 i2c module name was "2220-board" in some places, and was > changed to "s2250". Looks good. Signed-off-by: Hans Verkuil <hverkuil@xxxxxxxxx> Regards, Hans > > Priority: normal > > Signed-off-by: Pete Eberlein <pete@xxxxxxxxxxxx> > > diff -r 99e4a0cf6788 -r 5fe2031944d4 linux/drivers/staging/go7007/Makefile > --- a/linux/drivers/staging/go7007/Makefile Tue Nov 10 10:47:34 2009 -0800 > +++ b/linux/drivers/staging/go7007/Makefile Tue Nov 10 10:54:51 2009 -0800 > @@ -5,7 +5,7 @@ > > obj-$(CONFIG_VIDEO_GO7007) += go7007.o > obj-$(CONFIG_VIDEO_GO7007_USB) += go7007-usb.o > -obj-$(CONFIG_VIDEO_GO7007_USB_S2250_BOARD) += s2250.o > +obj-$(CONFIG_VIDEO_GO7007_USB_S2250_BOARD) += s2250.o s2250-loader.o > obj-$(CONFIG_VIDEO_GO7007_SAA7113) += wis-saa7113.o > obj-$(CONFIG_VIDEO_GO7007_OV7640) += wis-ov7640.o > obj-$(CONFIG_VIDEO_GO7007_SAA7115) += wis-saa7115.o > @@ -17,7 +17,7 @@ > go7007-objs += go7007-v4l2.o go7007-driver.o go7007-i2c.o go7007-fw.o \ > snd-go7007.o > > -s2250-objs += s2250-board.o s2250-loader.o > +s2250-objs += s2250-board.o > > # Uncomment when the saa7134 patches get into upstream > #ifneq ($(CONFIG_VIDEO_SAA7134),) > diff -r 99e4a0cf6788 -r 5fe2031944d4 linux/drivers/staging/go7007/go7007-driver.c > --- a/linux/drivers/staging/go7007/go7007-driver.c Tue Nov 10 10:47:34 2009 -0800 > +++ b/linux/drivers/staging/go7007/go7007-driver.c Tue Nov 10 10:54:51 2009 -0800 > @@ -219,7 +219,7 @@ > modname = "wis-ov7640"; > break; > case I2C_DRIVERID_S2250: > - modname = "s2250-board"; > + modname = "s2250"; > break; > default: > modname = NULL; > diff -r 99e4a0cf6788 -r 5fe2031944d4 linux/drivers/staging/go7007/go7007-usb.c > --- a/linux/drivers/staging/go7007/go7007-usb.c Tue Nov 10 10:47:34 2009 -0800 > +++ b/linux/drivers/staging/go7007/go7007-usb.c Tue Nov 10 10:54:51 2009 -0800 > @@ -425,7 +425,7 @@ > .num_i2c_devs = 1, > .i2c_devs = { > { > - .type = "s2250_board", > + .type = "s2250", > .id = I2C_DRIVERID_S2250, > .addr = 0x43, > }, > diff -r 99e4a0cf6788 -r 5fe2031944d4 linux/drivers/staging/go7007/s2250-board.c > --- a/linux/drivers/staging/go7007/s2250-board.c Tue Nov 10 10:47:34 2009 -0800 > +++ b/linux/drivers/staging/go7007/s2250-board.c Tue Nov 10 10:54:51 2009 -0800 > @@ -20,10 +20,13 @@ > #include <linux/usb.h> > #include <linux/i2c.h> > #include <linux/videodev2.h> > +#include <media/v4l2-device.h> > #include <media/v4l2-common.h> > -#include "s2250-loader.h" > +#include <media/v4l2-i2c-drv.h> > #include "go7007-priv.h" > -#include "wis-i2c.h" > + > +MODULE_DESCRIPTION("Sensoray 2250/2251 i2c v4l2 subdev driver"); > +MODULE_LICENSE("GPL v2"); > > #define TLV320_ADDRESS 0x34 > #define VPX322_ADDR_ANALOGCONTROL1 0x02 > @@ -575,7 +578,7 @@ > dec->audio = audio; > i2c_set_clientdata(client, dec); > > - printk(KERN_DEBUG > + printk(KERN_INFO > "s2250: initializing video decoder on %s\n", > adapter->name); > > @@ -648,46 +651,20 @@ > return 0; > } > > +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) > static struct i2c_device_id s2250_id[] = { > - { "s2250_board", 0 }, > + { "s2250", 0 }, > { } > }; > +MODULE_DEVICE_TABLE(i2c, s2250_id); > > -static struct i2c_driver s2250_driver = { > - .driver = { > - .name = "Sensoray 2250 board driver", > - }, > - .probe = s2250_probe, > - .remove = s2250_remove, > - .command = s2250_command, > - .id_table = s2250_id, > +#endif > +static struct v4l2_i2c_driver_data v4l2_i2c_data = { > + .name = "s2250", > + .probe = s2250_probe, > + .remove = s2250_remove, > + .command = s2250_command, > +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) > + .id_table = s2250_id, > +#endif > }; > - > -static int __init s2250_init(void) > -{ > - int r; > - > - r = s2250loader_init(); > - if (r < 0) > - return r; > - > - r = i2c_add_driver(&s2250_driver); > - if (r < 0) > - s2250loader_cleanup(); > - > - return r; > -} > - > -static void __exit s2250_cleanup(void) > -{ > - i2c_del_driver(&s2250_driver); > - > - s2250loader_cleanup(); > -} > - > -module_init(s2250_init); > -module_exit(s2250_cleanup); > - > -MODULE_AUTHOR(""); > -MODULE_DESCRIPTION("Board driver for Sensoryray 2250"); > -MODULE_LICENSE("GPL v2"); > diff -r 99e4a0cf6788 -r 5fe2031944d4 linux/drivers/staging/go7007/s2250-loader.c > --- a/linux/drivers/staging/go7007/s2250-loader.c Tue Nov 10 10:47:34 2009 -0800 > +++ b/linux/drivers/staging/go7007/s2250-loader.c Tue Nov 10 10:54:51 2009 -0800 > @@ -162,7 +162,7 @@ > .id_table = s2250loader_ids, > }; > > -int s2250loader_init(void) > +static int __init s2250loader_init(void) > { > int r; > unsigned i = 0; > @@ -179,11 +179,15 @@ > printk(KERN_INFO "s2250loader_init: driver registered\n"); > return 0; > } > -EXPORT_SYMBOL(s2250loader_init); > +module_init(s2250loader_init); > > -void s2250loader_cleanup(void) > +static void __exit s2250loader_cleanup(void) > { > printk(KERN_INFO "s2250loader_cleanup\n"); > usb_deregister(&s2250loader_driver); > } > -EXPORT_SYMBOL(s2250loader_cleanup); > +module_exit(s2250loader_cleanup); > + > +MODULE_AUTHOR(""); > +MODULE_DESCRIPTION("firmware loader for Sensoray 2250/2251"); > +MODULE_LICENSE("GPL v2"); > > -- > 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 > > -- Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom -- 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