All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 2/9]Four new i2c drivers and __init/__exit cleanup to i2c
@ 2005-05-19  6:23 Albert Cranford
  2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c Jeff Garzik
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Albert Cranford @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

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
--- i2c-pport.c 2002-09-12 02:55:47.000000000 -0400
+++ /usr/src/linux/drivers/i2c/i2c-pport.c      2002-09-16 09:30:00.000000000 -0400
@@ -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 <marvin@sitour.cz>");
 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);

Jeff Garzik wrote:
> 
> Albert Cranford wrote:
> 
> > +#ifdef MODULE_LICENSE
> > +MODULE_LICENSE("GPL");
> > +#endif
> 
> kill the ifdef
> 
> > +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_region should never be used.
> 
> > +             return -ENODEV;
> > +     } else {
> > +
> > +             /* test for PPORT adap.         */
> > +
> > +
> > +             PortData=inb(base+2);
> > +             PortData= (PortData SET_SDA) SET_SCL;
> > +             outb(PortData,base+2);
> > +
> > +             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
> 
> > +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;
> > +#endif
> 
> kill the ifdef.  use ->owner instead if possible.
> 
> > +#ifdef MODULE
> > +MODULE_AUTHOR("Daniel Smolik <marvin@sitour.cz>");
> > +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
> 
> kill the ifdef, use module_init, module_exit

-- 
Albert Cranford Deerfield Beach FL USA
ac9410@bellsouth.net

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [patch 2/9]Four new i2c drivers and __init/__exit cleanup to
  2005-05-19  6:23 [patch 2/9]Four new i2c drivers and __init/__exit cleanup to i2c Albert Cranford
  2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c Jeff Garzik
  2005-05-19  6:23 ` Albert Cranford
@ 2005-05-19  6:23 ` Jeff Garzik
  2 siblings, 0 replies; 4+ messages in thread
From: Jeff Garzik @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

Albert Cranford wrote:
> -#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.


>  #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 {
>  

request_region returns non-zero on success...


> @@ -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;

Why remove 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 <marvin@sitour.cz>");
>  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);


This looks ok to me.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c
  2005-05-19  6:23 [patch 2/9]Four new i2c drivers and __init/__exit cleanup to i2c Albert Cranford
  2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c Jeff Garzik
@ 2005-05-19  6:23 ` Albert Cranford
  2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup to Jeff Garzik
  2 siblings, 0 replies; 4+ messages in thread
From: Albert Cranford @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

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 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
--- i2c-pport.c 2002-09-12 02:55:47.000000000 -0400
+++ /usr/src/linux/drivers/i2c/i2c-pport.c      2002-09-17 08:39:20.000000000 -0400
@@ -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 <marvin@sitour.cz>");
 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);


Jeff Garzik wrote:
> 
> Albert Cranford wrote:
> > -#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.
> 
> >  #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 {
> >
> 
> request_region returns non-zero on success...
> 
> > @@ -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;
> 
> Why remove 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 <marvin@sitour.cz>");
> >  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);
> 
> This looks ok to me.

-- 
Albert Cranford Deerfield Beach FL USA
ac9410@bellsouth.net

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c
  2005-05-19  6:23 [patch 2/9]Four new i2c drivers and __init/__exit cleanup to i2c Albert Cranford
@ 2005-05-19  6:23 ` Jeff Garzik
  2005-05-19  6:23 ` Albert Cranford
  2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup to Jeff Garzik
  2 siblings, 0 replies; 4+ messages in thread
From: Jeff Garzik @ 2005-05-19  6:23 UTC (permalink / raw)
  To: lm-sensors

Albert Cranford wrote:
> 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 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
> --- i2c-pport.c 2002-09-12 02:55:47.000000000 -0400
> +++ /usr/src/linux/drivers/i2c/i2c-pport.c      2002-09-17 08:39:20.000000000 -0400


Yes, this patch looks fine to me...

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-05-19  6:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-19  6:23 [patch 2/9]Four new i2c drivers and __init/__exit cleanup to i2c Albert Cranford
2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup toi2c Jeff Garzik
2005-05-19  6:23 ` Albert Cranford
2005-05-19  6:23 ` [patch 2/9]Four new i2c drivers and __init/__exit cleanup to Jeff Garzik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.