Re: [PATCH 3/5] s2250: Change module structure
On Tuesday 10 November 2009 20:21:37 Pete Eberlein wrote: From: Pete Eberlein p...@sensoray.com 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 hverk...@xs4all.nl Regards, Hans Priority: normal Signed-off-by: Pete Eberlein p...@sensoray.com 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.cTue Nov 10 10:47:34 2009 -0800 +++ b/linux/drivers/staging/go7007/go7007-driver.cTue 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
[PATCH 3/5] s2250: Change module structure
From: Pete Eberlein p...@sensoray.com 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. 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. Priority: normal Signed-off-by: Pete Eberlein p...@sensoray.com 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.cTue Nov 10 10:47:34 2009 -0800 +++ b/linux/drivers/staging/go7007/s2250-board.cTue 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