Re: [PATCH 3/5] s2250: Change module structure

2009-11-15 Thread Hans Verkuil
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

2009-11-10 Thread Pete Eberlein
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