Four new i2c drivers and __init/__exit cleanup to i2c
PATCH 2/9 Four new i2c drivers and __init/__exit cleanup to i2c
This specific change set was for i2c-pport.c and 2.5.34. I propose the following changes to satisfy 2.5 kernel requirements. Of course the #include changes and MODULE_LICENSE will not be checked into CVS.
The request to abandon udelay for sleep was not addressed.
Anyone see a problem with 2.2 or 2.4 and these changes? Regards,
Albert
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +10 -27
@@ -36,12 +36,10 @@ #include <linux/ioport.h> #include <asm/io.h> #include <linux/errno.h> -#include "i2c.h" -#include "i2c-algo-bit.h" +#include <linux/i2c.h> +#include <linux/i2c-algo-bit.h> -#ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); -#endif #define DEFAULT_BASE 0x378 static int base=0;
@@ -112,9 +110,7 @@ static int bit_pport_init(void) { - //release_region( (base+2) ,1); - - if (check_region((base+2),1) < 0 ) { + if (request_region((base+2),1, "i2c (PPORT adapter)") < 0 ) { return -ENODEV; } else {
@@ -148,11 +144,6 @@ return 0; } -static void __exit bit_pport_exit(void) -{ - release_region((base+2),1); -} - static int bit_pport_reg(struct i2c_client *client) { return 0;
@@ -231,24 +222,16 @@ } -EXPORT_NO_SYMBOLS; +static void __exit i2c_bitpport_exit(void) +{ + i2c_bit_del_bus(&bit_pport_ops); + release_region((base+2),1); +} -#ifdef MODULE MODULE_AUTHOR("Daniel Smolik <[email protected]>"); MODULE_DESCRIPTION("I2C-Bus adapter routines for Primitive parallel port adapter") ; - MODULE_PARM(base, "i"); -int init_module(void) -{ - return i2c_bitpport_init(); -} - -void cleanup_module(void) -{ - i2c_bit_del_bus(&bit_pport_ops); - bit_pport_exit(); -} - -#endif +module_init(i2c_bitpport_init); +module_exit(i2c_bitpport_exit);
Quoted 76 lines · Jeff Garzik
Review
Quoted 3 lines · Albert Cranford
(quoted diff) +3
-0+#ifdef MODULE_LICENSE +MODULE_LICENSE("GPL"); +#endifkill the ifdef
Review
Quoted 5 lines
(quoted diff) +5
-0+static int bit_pport_init(void) +{ + //release_region( (base+2) ,1); + + if (check_region((base+2),1) < 0 ) {wrong. race. use
request_region, and check its return value.check_regionshould never be used.Quoted 9 lines
(quoted diff) +9
-0+ return -ENODEV; + } else { + + /* test for PPORT adap. */ + + + PortData=inb(base+2); + PortData= (PortData SET_SDA) SET_SCL; + outb(PortData,base+2);Review
Quoted 10 lines
(quoted diff) +10
-0+ + if (!(inb(base+2) | 0x06)) { /* SDA and SCL will be high */ + DEBINIT(printk("i2c-pport.o: SDA and SCL was low.\n")); + return -ENODEV; + } else { + + /*SCL high and SDA low*/ + PortData = PortData SET_SCL CLR_SDA; + outb(PortData,base+2); + udelay(400);long udelay in process context, where you should sleep instead
Review
Quoted 12 lines
(quoted diff) +12
-0+static void bit_pport_inc_use(struct i2c_adapter *adap) +{ +#ifdef MODULE + MOD_INC_USE_COUNT; +#endif +} + +static void bit_pport_dec_use(struct i2c_adapter *adap) +{ +#ifdef MODULE + MOD_DEC_USE_COUNT; +#endifkill the ifdef. use ->owner instead if possible.
Quoted 9 lines
(quoted diff) +9
-0+#ifdef MODULE +MODULE_AUTHOR("Daniel Smolik <[email protected]>"); +MODULE_DESCRIPTION("I2C-Bus adapter routines for Primitive parallel port adapter") +; + +MODULE_PARM(base, "i"); + +int init_module(void) +{Review
Quoted 10 lines
(quoted diff) +10
-0+ return i2c_bitpport_init(); +} + +void cleanup_module(void) +{ + i2c_bit_del_bus(&bit_pport_ops); + bit_pport_exit(); +} + +#endifkill the ifdef, use
module_init,module_exit
Signature · 2 lines
Albert Cranford Deerfield Beach FL USA [email protected]
PATCH 2/9 Four new i2c drivers and __init/__exit cleanup to
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 line 44
Quoted 3 lines · Albert Cranford
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +0
-2-#ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); -#endif
This change requires that you define MODULE_LICENSE in a kernel compatibility header, for 2.2.
It will work without such assistance in 2.4 and 2.5.
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 line 116
Quoted 13 lines
#define
DEFAULT_BASE0x378
static int base=0;usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +1
-3@@ -112,9 +110,7 @@ static int bit_pport_init(void) { - //release_region( (base+2) ,1); - - if (check_region((base+2),1) < 0 ) { + if (request_region((base+2),1, "i2c (PPORT adapter)") < 0 ) { return -ENODEV; } else {
request_region returns non-zero on success...
Quoted 13 lines
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +0
-5@@ -148,11 +144,6 @@ return 0; } -static void __exit bit_pport_exit(void) -{ - release_region((base+2),1); -} - static int bit_pport_reg(struct i2c_client *client) { return 0;
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 line 234
Quoted 4 lines
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +0
-1@@ -231,24 +222,16 @@ } -EXPORT_NO_SYMBOLS;
Why remove export-no-symbols?
Quoted 17 lines
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +5
-6+static void __exit i2c_bitpport_exit(void) +{ + i2c_bit_del_bus(&bit_pport_ops); + release_region((base+2),1); +} -#ifdef MODULE MODULE_AUTHOR("Daniel Smolik <[email protected]>"); MODULE_DESCRIPTION("I2C-Bus adapter routines for Primitive parallel port adapter") ; - MODULE_PARM(base, "i"); -int init_module(void) -{ - return i2c_bitpport_init(); -}
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 line 237
Quoted 10 lines
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-16 09:30:00.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +2
-8- -void cleanup_module(void) -{ - i2c_bit_del_bus(&bit_pport_ops); - bit_pport_exit(); -} - -#endif +module_init(i2c_bitpport_init); +module_exit(i2c_bitpport_exit);
This looks ok to me.
PATCH 2/9 Four new i2c drivers and __init/__exit cleanup toi2c
In reply to Albert CranfordHi Jeff,
I think I noted that compatibility stuff will not be checked in, but noted here for linux-2.5.xx. This is something that I have to manually ignore when diffing CVS and kernel. And yes EXPORT_NO_SYMBOLS is explicitly defined now in 2.5.xx, but no harm in redundency, so I'll leave it in the code.
I repaired the call to request_region and also removed an unneeded call to request_region from the else path.
Now I need someone to test it in the different versions.
New change set.
Albert
usr/src/linux/drivers/i2c/i2c-pport.c 2002-09-17 08:39:20.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +11 -29
@@ -36,12 +36,10 @@ #include <linux/ioport.h> #include <asm/io.h> #include <linux/errno.h> -#include "i2c.h" -#include "i2c-algo-bit.h" +#include <linux/i2c.h> +#include <linux/i2c-algo-bit.h> -#ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); -#endif #define DEFAULT_BASE 0x378 static int base=0;
@@ -112,9 +110,7 @@ static int bit_pport_init(void) { - //release_region( (base+2) ,1); - - if (check_region((base+2),1) < 0 ) { + if (!request_region((base+2),1, "i2c (PPORT adapter)")) { return -ENODEV; } else {
@@ -140,19 +136,12 @@ return -ENODEV; } } - request_region((base+2),1, - "i2c (PPORT adapter)"); bit_pport_setsda((void*)base,1); bit_pport_setscl((void*)base,1); } return 0; } -static void __exit bit_pport_exit(void) -{ - release_region((base+2),1); -} - static int bit_pport_reg(struct i2c_client *client) { return 0;
@@ -231,24 +220,17 @@ } -EXPORT_NO_SYMBOLS; +static void __exit i2c_bitpport_exit(void) +{ + i2c_bit_del_bus(&bit_pport_ops); + release_region((base+2),1); +} -#ifdef MODULE +EXPORT_NO_SYMBOLS; MODULE_AUTHOR("Daniel Smolik <[email protected]>"); MODULE_DESCRIPTION("I2C-Bus adapter routines for Primitive parallel port adapter") ; - MODULE_PARM(base, "i"); -int init_module(void) -{ - return i2c_bitpport_init(); -} - -void cleanup_module(void) -{ - i2c_bit_del_bus(&bit_pport_ops); - bit_pport_exit(); -} - -#endif +module_init(i2c_bitpport_init); +module_exit(i2c_bitpport_exit);
Quoted 76 lines · Jeff Garzik
Review
Quoted 3 lines · Albert Cranford
(quoted diff) +0
-2-#ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); -#endifThis change requires that you define
MODULE_LICENSEin a kernel compatibility header, for 2.2.It will work without such assistance in 2.4 and 2.5.
Review line 116
Quoted 13 lines
#define
DEFAULT_BASE0x378
static int base=0;(quoted diff) +1
-3@@ -112,9 +110,7 @@ static int bit_pport_init(void) { - //release_region( (base+2) ,1); - - if (check_region((base+2),1) < 0 ) { + if (request_region((base+2),1, "i2c (PPORT adapter)") < 0 ) { return -ENODEV; } else {
request_regionreturns non-zero on success...Quoted 13 lines
(quoted diff) +0
-5@@ -148,11 +144,6 @@ return 0; } -static void __exit bit_pport_exit(void) -{ - release_region((base+2),1); -} - static int bit_pport_reg(struct i2c_client *client) { return 0;Review line 234
Quoted 4 lines
(quoted diff) +0
-1@@ -231,24 +222,16 @@ } -EXPORT_NO_SYMBOLS;Why remove export-no-symbols?
Quoted 17 lines
(quoted diff) +5
-6+static void __exit i2c_bitpport_exit(void) +{ + i2c_bit_del_bus(&bit_pport_ops); + release_region((base+2),1); +} -#ifdef MODULE MODULE_AUTHOR("Daniel Smolik <[email protected]>"); MODULE_DESCRIPTION("I2C-Bus adapter routines for Primitive parallel port adapter") ; - MODULE_PARM(base, "i"); -int init_module(void) -{ - return i2c_bitpport_init(); -}Review line 237
Quoted 10 lines
(quoted diff) +2
-8- -void cleanup_module(void) -{ - i2c_bit_del_bus(&bit_pport_ops); - bit_pport_exit(); -} - -#endif +module_init(i2c_bitpport_init); +module_exit(i2c_bitpport_exit);This looks ok to me.
Signature · 2 lines
Albert Cranford Deerfield Beach FL USA [email protected]
PATCH 2/9 Four new i2c drivers and __init/__exit cleanup toi2c
In reply to Albert Cranfordusr/src/linux/drivers/i2c/i2c-pport.c 2002-09-17 08:39:20.000000000 -0400
Quoted 17 lines · Albert Cranford
Hi Jeff,
I think I noted that compatibility stuff will not be checked in, but noted here for linux-2.5.xx. This is something that I have to manually ignore when diffing CVS and kernel. And yesEXPORT_NO_SYMBOLSis explicitly defined now in 2.5.xx, but no harm in redundency, so I'll leave it in the code.I repaired the call to
request_regionand also removed an unneeded call torequest_regionfrom the else path.Now I need someone to test it in the different versions.
New change set.
Albertusr/src/linux/drivers/i2c/i2c-pport.c 2002-09-17 08:39:20.000000000 -0400 renamed from i2c-pport.c 2002-09-12 02:55:47.000000000 -0400 +0
-0
Yes, this patch looks fine to me...