]> git.hungrycats.org Git - linux/commitdiff
[PATCH] I2C: move i2c-elv.c driver to drivers/i2c/busses
authorGreg Kroah-Hartman <greg@kroah.com>
Mon, 22 Sep 2003 06:36:52 +0000 (23:36 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Mon, 22 Sep 2003 06:36:52 +0000 (23:36 -0700)
drivers/i2c/Kconfig
drivers/i2c/Makefile
drivers/i2c/busses/Kconfig
drivers/i2c/busses/Makefile
drivers/i2c/busses/i2c-elv.c [new file with mode: 0644]
drivers/i2c/i2c-elv.c [deleted file]

index 88d79760c9a634430f9cd475764c5dccd5273e6e..33a30d0141cfcb79fd09de6fa52e917bfd2703e5 100644 (file)
@@ -48,16 +48,6 @@ config I2C_ALGOBIT
          This support is also available as a module.  If so, the module 
          will be called i2c-algo-bit.
 
-config I2C_ELV
-       tristate "ELV adapter"
-       depends on I2C_ALGOBIT && ISA
-       help
-         This supports parallel-port I2C adapters called ELV.  Say Y if you
-         own such an adapter.
-
-         This support is also available as a module.  If so, the module 
-         will be called i2c-elv.
-
 config I2C_VELLEMAN
        tristate "Velleman K9000 adapter"
        depends on I2C_ALGOBIT && ISA
index ccfb860669fd3ee2356f207a7523ce55dec3a741..998df080318f87b0e8c5c810c5614e432fe2121d 100644 (file)
@@ -5,7 +5,6 @@
 obj-$(CONFIG_I2C)              += i2c-core.o
 obj-$(CONFIG_I2C_CHARDEV)      += i2c-dev.o
 obj-$(CONFIG_I2C_ALGOBIT)      += i2c-algo-bit.o
-obj-$(CONFIG_I2C_ELV)          += i2c-elv.o
 obj-$(CONFIG_I2C_VELLEMAN)     += i2c-velleman.o
 obj-$(CONFIG_I2C_ALGOPCF)      += i2c-algo-pcf.o
 obj-$(CONFIG_I2C_ELEKTOR)      += i2c-elektor.o
index 861c166aef5cadcaef53ab961e068f32deb046c7..8be772f843d5b054ac1db6912b32171ac38ee024 100644 (file)
@@ -46,6 +46,16 @@ config I2C_AMD8111
          This driver can also be built as a module.  If so, the module
          will be called i2c-amd8111.
 
+config I2C_ELV
+       tristate "ELV adapter"
+       depends on I2C_ALGOBIT && ISA
+       help
+         This supports parallel-port I2C adapters called ELV.  Say Y if you
+         own such an adapter.
+
+         This support is also available as a module.  If so, the module 
+         will be called i2c-elv.
+
 config I2C_I801
        tristate "Intel 801"
        depends on I2C && PCI && EXPERIMENTAL
index 405b1e1c4221a66c2fe55164d72f03e097080b4b..c8bead9a9274b3a830c95ee9b9df0f4aa2da1178 100644 (file)
@@ -6,6 +6,7 @@ obj-$(CONFIG_I2C_ALI1535)       += i2c-ali1535.o
 obj-$(CONFIG_I2C_ALI15X3)      += i2c-ali15x3.o
 obj-$(CONFIG_I2C_AMD756)       += i2c-amd756.o
 obj-$(CONFIG_I2C_AMD8111)      += i2c-amd8111.o
+obj-$(CONFIG_I2C_ELV)          += i2c-elv.o
 obj-$(CONFIG_I2C_I801)         += i2c-i801.o
 obj-$(CONFIG_I2C_I810)         += i2c-i810.o
 obj-$(CONFIG_I2C_ISA)          += i2c-isa.o
diff --git a/drivers/i2c/busses/i2c-elv.c b/drivers/i2c/busses/i2c-elv.c
new file mode 100644 (file)
index 0000000..2045dc3
--- /dev/null
@@ -0,0 +1,176 @@
+/* ------------------------------------------------------------------------- */
+/* i2c-elv.c i2c-hw access for philips style parallel port adapters         */
+/* ------------------------------------------------------------------------- */
+/*   Copyright (C) 1995-2000 Simon G. Vogl
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.               */
+/* ------------------------------------------------------------------------- */
+
+/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even
+   Frodo Looijaard <frodol@dds.nl> */
+
+/* $Id: i2c-elv.c,v 1.27 2003/01/21 08:08:16 kmalkki Exp $ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/slab.h>
+#include <linux/init.h>
+#include <linux/ioport.h>
+#include <linux/errno.h>
+#include <linux/i2c.h>
+#include <linux/i2c-algo-bit.h>
+#include <asm/io.h>
+
+#define DEFAULT_BASE 0x378
+static int base=0;
+static unsigned char PortData = 0;
+
+/* ----- global defines -----------------------------------------------        */
+#define DEB(x)         /* should be reasonable open, close &c.         */
+#define DEB2(x)        /* low level debugging - very slow              */
+#define DEBE(x)        x       /* error messages                               */
+#define DEBINIT(x) x   /* detection status messages                    */
+
+/* --- Convenience defines for the parallel port:                      */
+#define BASE   (unsigned int)(data)
+#define DATA   BASE                    /* Centronics data port         */
+#define STAT   (BASE+1)                /* Centronics status port       */
+#define CTRL   (BASE+2)                /* Centronics control port      */
+
+
+/* ----- local functions ----------------------------------------------        */
+
+
+static void bit_elv_setscl(void *data, int state)
+{
+       if (state) {
+               PortData &= 0xfe;
+       } else {
+               PortData |=1;
+       }
+       outb(PortData, DATA);
+}
+
+static void bit_elv_setsda(void *data, int state)
+{
+       if (state) {
+               PortData &=0xfd;
+       } else {
+               PortData |=2;
+       }
+       outb(PortData, DATA);
+} 
+
+static int bit_elv_getscl(void *data)
+{
+       return ( 0 == ( (inb_p(STAT)) & 0x08 ) );
+}
+
+static int bit_elv_getsda(void *data)
+{
+       return ( 0 == ( (inb_p(STAT)) & 0x40 ) );
+}
+
+static int bit_elv_init(void)
+{
+       if (!request_region(base, (base == 0x3bc) ? 3 : 8,
+                               "i2c (ELV adapter)"))
+               return -ENODEV;
+
+       if (inb(base+1) & 0x80) {       /* BUSY should be high  */
+               DEBINIT(printk(KERN_DEBUG "i2c-elv.o: Busy was low.\n"));
+               goto fail;
+       } 
+
+       outb(0x0c,base+2);      /* SLCT auf low         */
+       udelay(400);
+       if (!(inb(base+1) && 0x10)) {
+               outb(0x04,base+2);
+               DEBINIT(printk(KERN_DEBUG "i2c-elv.o: Select was high.\n"));
+               goto fail;
+       }
+
+       PortData = 0;
+       bit_elv_setsda((void*)base,1);
+       bit_elv_setscl((void*)base,1);
+       return 0;
+
+fail:
+       release_region(base , (base == 0x3bc) ? 3 : 8);
+       return -ENODEV;
+}
+
+/* ------------------------------------------------------------------------
+ * Encapsulate the above functions in the correct operations structure.
+ * This is only done when more than one hardware adapter is supported.
+ */
+static struct i2c_algo_bit_data bit_elv_data = {
+       .setsda         = bit_elv_setsda,
+       .setscl         = bit_elv_setscl,
+       .getsda         = bit_elv_getsda,
+       .getscl         = bit_elv_getscl,
+       .udelay         = 80,
+       .mdelay         = 80,
+       .timeout        = HZ
+};
+
+static struct i2c_adapter bit_elv_ops = {
+       .owner          = THIS_MODULE,
+       .id             = I2C_HW_B_ELV,
+       .algo_data      = &bit_elv_data,
+       .name           = "ELV Parallel port adaptor",
+};
+
+static int __init i2c_bitelv_init(void)
+{
+       printk(KERN_INFO "i2c-elv.o: i2c ELV parallel port adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
+       if (base==0) {
+               /* probe some values */
+               base=DEFAULT_BASE;
+               bit_elv_data.data=(void*)DEFAULT_BASE;
+               if (bit_elv_init()==0) {
+                       if(i2c_bit_add_bus(&bit_elv_ops) < 0)
+                               return -ENODEV;
+               } else {
+                       return -ENODEV;
+               }
+       } else {
+               i2c_set_adapdata(&bit_elv_ops, (void *)base);
+               if (bit_elv_init()==0) {
+                       if(i2c_bit_add_bus(&bit_elv_ops) < 0)
+                               return -ENODEV;
+               } else {
+                       return -ENODEV;
+               }
+       }
+       printk(KERN_DEBUG "i2c-elv.o: found device at %#x.\n",base);
+       return 0;
+}
+
+static void __exit i2c_bitelv_exit(void)
+{
+       i2c_bit_del_bus(&bit_elv_ops);
+       release_region(base , (base == 0x3bc) ? 3 : 8);
+}
+
+MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
+MODULE_DESCRIPTION("I2C-Bus adapter routines for ELV parallel port adapter");
+MODULE_LICENSE("GPL");
+
+MODULE_PARM(base, "i");
+
+module_init(i2c_bitelv_init);
+module_exit(i2c_bitelv_exit);
diff --git a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c
deleted file mode 100644 (file)
index 2045dc3..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-/* ------------------------------------------------------------------------- */
-/* i2c-elv.c i2c-hw access for philips style parallel port adapters         */
-/* ------------------------------------------------------------------------- */
-/*   Copyright (C) 1995-2000 Simon G. Vogl
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.               */
-/* ------------------------------------------------------------------------- */
-
-/* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even
-   Frodo Looijaard <frodol@dds.nl> */
-
-/* $Id: i2c-elv.c,v 1.27 2003/01/21 08:08:16 kmalkki Exp $ */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/errno.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <asm/io.h>
-
-#define DEFAULT_BASE 0x378
-static int base=0;
-static unsigned char PortData = 0;
-
-/* ----- global defines -----------------------------------------------        */
-#define DEB(x)         /* should be reasonable open, close &c.         */
-#define DEB2(x)        /* low level debugging - very slow              */
-#define DEBE(x)        x       /* error messages                               */
-#define DEBINIT(x) x   /* detection status messages                    */
-
-/* --- Convenience defines for the parallel port:                      */
-#define BASE   (unsigned int)(data)
-#define DATA   BASE                    /* Centronics data port         */
-#define STAT   (BASE+1)                /* Centronics status port       */
-#define CTRL   (BASE+2)                /* Centronics control port      */
-
-
-/* ----- local functions ----------------------------------------------        */
-
-
-static void bit_elv_setscl(void *data, int state)
-{
-       if (state) {
-               PortData &= 0xfe;
-       } else {
-               PortData |=1;
-       }
-       outb(PortData, DATA);
-}
-
-static void bit_elv_setsda(void *data, int state)
-{
-       if (state) {
-               PortData &=0xfd;
-       } else {
-               PortData |=2;
-       }
-       outb(PortData, DATA);
-} 
-
-static int bit_elv_getscl(void *data)
-{
-       return ( 0 == ( (inb_p(STAT)) & 0x08 ) );
-}
-
-static int bit_elv_getsda(void *data)
-{
-       return ( 0 == ( (inb_p(STAT)) & 0x40 ) );
-}
-
-static int bit_elv_init(void)
-{
-       if (!request_region(base, (base == 0x3bc) ? 3 : 8,
-                               "i2c (ELV adapter)"))
-               return -ENODEV;
-
-       if (inb(base+1) & 0x80) {       /* BUSY should be high  */
-               DEBINIT(printk(KERN_DEBUG "i2c-elv.o: Busy was low.\n"));
-               goto fail;
-       } 
-
-       outb(0x0c,base+2);      /* SLCT auf low         */
-       udelay(400);
-       if (!(inb(base+1) && 0x10)) {
-               outb(0x04,base+2);
-               DEBINIT(printk(KERN_DEBUG "i2c-elv.o: Select was high.\n"));
-               goto fail;
-       }
-
-       PortData = 0;
-       bit_elv_setsda((void*)base,1);
-       bit_elv_setscl((void*)base,1);
-       return 0;
-
-fail:
-       release_region(base , (base == 0x3bc) ? 3 : 8);
-       return -ENODEV;
-}
-
-/* ------------------------------------------------------------------------
- * Encapsulate the above functions in the correct operations structure.
- * This is only done when more than one hardware adapter is supported.
- */
-static struct i2c_algo_bit_data bit_elv_data = {
-       .setsda         = bit_elv_setsda,
-       .setscl         = bit_elv_setscl,
-       .getsda         = bit_elv_getsda,
-       .getscl         = bit_elv_getscl,
-       .udelay         = 80,
-       .mdelay         = 80,
-       .timeout        = HZ
-};
-
-static struct i2c_adapter bit_elv_ops = {
-       .owner          = THIS_MODULE,
-       .id             = I2C_HW_B_ELV,
-       .algo_data      = &bit_elv_data,
-       .name           = "ELV Parallel port adaptor",
-};
-
-static int __init i2c_bitelv_init(void)
-{
-       printk(KERN_INFO "i2c-elv.o: i2c ELV parallel port adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
-       if (base==0) {
-               /* probe some values */
-               base=DEFAULT_BASE;
-               bit_elv_data.data=(void*)DEFAULT_BASE;
-               if (bit_elv_init()==0) {
-                       if(i2c_bit_add_bus(&bit_elv_ops) < 0)
-                               return -ENODEV;
-               } else {
-                       return -ENODEV;
-               }
-       } else {
-               i2c_set_adapdata(&bit_elv_ops, (void *)base);
-               if (bit_elv_init()==0) {
-                       if(i2c_bit_add_bus(&bit_elv_ops) < 0)
-                               return -ENODEV;
-               } else {
-                       return -ENODEV;
-               }
-       }
-       printk(KERN_DEBUG "i2c-elv.o: found device at %#x.\n",base);
-       return 0;
-}
-
-static void __exit i2c_bitelv_exit(void)
-{
-       i2c_bit_del_bus(&bit_elv_ops);
-       release_region(base , (base == 0x3bc) ? 3 : 8);
-}
-
-MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
-MODULE_DESCRIPTION("I2C-Bus adapter routines for ELV parallel port adapter");
-MODULE_LICENSE("GPL");
-
-MODULE_PARM(base, "i");
-
-module_init(i2c_bitelv_init);
-module_exit(i2c_bitelv_exit);