Converted all pci drivers to use COMEDI_PCI_INITCLEANUP. Automatic
authorFrank Mori Hess <fmhess@speakeasy.net>
Tue, 21 Oct 2008 16:10:00 +0000 (16:10 +0000)
committerFrank Mori Hess <fmhess@speakeasy.net>
Tue, 21 Oct 2008 16:10:00 +0000 (16:10 +0000)
configuration should work as long as the driver supported the usual

comedi_config <driver_name> <bus>,<slot>

configuration scheme for pci devices.

39 files changed:
comedi/drivers/adl_pci6208.c
comedi/drivers/adl_pci7296.c
comedi/drivers/adl_pci7432.c
comedi/drivers/adl_pci8164.c
comedi/drivers/adl_pci9111.c
comedi/drivers/adl_pci9118.c
comedi/drivers/adv_pci1710.c
comedi/drivers/adv_pci1723.c
comedi/drivers/adv_pci_dio.c
comedi/drivers/amplc_dio200.c
comedi/drivers/amplc_pc236.c
comedi/drivers/amplc_pc263.c
comedi/drivers/amplc_pci224.c
comedi/drivers/amplc_pci230.c
comedi/drivers/cb_pcidas.c
comedi/drivers/cb_pcidas64.c
comedi/drivers/cb_pcidda.c
comedi/drivers/cb_pcidio.c
comedi/drivers/cb_pcimdas.c
comedi/drivers/cb_pcimdda.c
comedi/drivers/contec_pci_dio.c
comedi/drivers/daqboard2000.c
comedi/drivers/das08.c
comedi/drivers/dt3000.c
comedi/drivers/gsc_hpdi.c
comedi/drivers/jr3_pci.c
comedi/drivers/ke_counter.c
comedi/drivers/me4000.c
comedi/drivers/me_daq.c
comedi/drivers/ni_6527.c
comedi/drivers/ni_65xx.c
comedi/drivers/ni_660x.c
comedi/drivers/ni_670x.c
comedi/drivers/ni_labpc.c
comedi/drivers/ni_pcidio.c
comedi/drivers/rtd520.c
comedi/drivers/s626.c
comedi/drivers/skel.c
include/linux/comedidev.h

index 2a6eb4dafaae521eec3c2b3ea2b87048475ea04e..15bd15a7b3c14273577aaa3f3ee225c3d37938c8 100644 (file)
@@ -1,6 +1,6 @@
 /*
     comedi/drivers/adl_pci6208.c
-    
+
     Hardware driver for ADLink 6208 series cards:
        card         | voltage output    | current output
        -------------+-------------------+---------------
@@ -37,9 +37,9 @@ Configuration Options:
   none
 
 References:
-       - ni_660x.c             
+       - ni_660x.c
        - adl_pci9111.c         copied the entire pci setup section
-       - adl_pci9118.c         
+       - adl_pci9118.c
 */
 /*
  * These headers should be followed by a blank line, and any comments
@@ -119,7 +119,7 @@ static comedi_driver driver_pci6208 = {
       detach:pci6208_detach,
 };
 
-COMEDI_INITCLEANUP(driver_pci6208);
+COMEDI_PCI_INITCLEANUP(driver_pci6208, pci6208_pci_table);
 
 static int pci6208_find_device(comedi_device * dev, int bus, int slot);
 static int
@@ -199,7 +199,7 @@ static int pci6208_attach(comedi_device * dev, comedi_devconfig * it)
 
 /*
  * _detach is called to deconfigure a device.  It should deallocate
- * resources.  
+ * resources.
  * This function is also called when _attach() fails, so it should be
  * careful not to release resources that were not necessarily
  * allocated by _attach().  dev->private and dev->subdevices are
index c46b215619c60c886e8370d4dbc314c23081e315..1f80b648e52045f4ad5ff2058cf62e494ce8d113 100644 (file)
@@ -189,4 +189,4 @@ static int adl_pci7296_detach(comedi_device * dev)
        return 0;
 }
 
-COMEDI_INITCLEANUP(driver_adl_pci7296);
+COMEDI_PCI_INITCLEANUP(driver_adl_pci7296, adl_pci7296_pci_table);
index ea4e7f7186458db9161fa911e153956acaf273ff..6bda91b477227dada0c88d9c4990017580f2300f 100644 (file)
@@ -217,4 +217,4 @@ static int adl_pci7432_di_insn_bits(comedi_device * dev, comedi_subdevice * s,
        return 2;
 }
 
-COMEDI_INITCLEANUP(driver_adl_pci7432);
+COMEDI_PCI_INITCLEANUP(driver_adl_pci7432, adl_pci7432_pci_table);
index e43c4f927c6b3497762368ee31f425a35a428352..8c22b7fa2525da1ca2b3d8c4cf73db30df3cb094 100644 (file)
@@ -527,4 +527,4 @@ static int adl_pci8164_insn_write_buf1(comedi_device * dev,
        return 2;
 }
 
-COMEDI_INITCLEANUP(driver_adl_pci8164);
+COMEDI_PCI_INITCLEANUP(driver_adl_pci8164, adl_pci8164_pci_table);
index 1295185fb1491f90477544084ce6ba4ba0c99d8f..b55d52da47428274ce15c55a0a1b7f369e246400 100644 (file)
@@ -336,7 +336,7 @@ static comedi_driver pci9111_driver = {
       offset:sizeof(pci9111_board_struct),
 };
 
-COMEDI_INITCLEANUP(pci9111_driver);
+COMEDI_PCI_INITCLEANUP(pci9111_driver, pci9111_pci_table);
 
 //
 // Private data structure
index 8ba859a3d6ffd8f6dace13da93423c2207f87ec8..cf0cfe8a4e45b68664d2ec6c81c9fa539eebabe9 100644 (file)
@@ -238,7 +238,7 @@ static comedi_driver driver_pci9118 = {
       offset:sizeof(boardtype),
 };
 
-COMEDI_INITCLEANUP(driver_pci9118);
+COMEDI_PCI_INITCLEANUP(driver_pci9118, pci9118_pci_table);
 
 typedef struct {
        unsigned long iobase_a; // base+size for AMCC chip
index a456a09b9cfe71a6cefd9ccb87c6cb37f1b70d41..17b0257556f2342542f5262a26e7b0d21bcc6ed7 100644 (file)
@@ -1538,7 +1538,7 @@ static int pci1710_detach(comedi_device * dev)
 /*
 ==============================================================================
 */
-COMEDI_INITCLEANUP(driver_pci1710);
+COMEDI_PCI_INITCLEANUP(driver_pci1710, pci1710_pci_table);
 /*
 ==============================================================================
 */
index a26fd8bbc90c8829514c26434a7fa7e81e18f0f4..2f4506acff04fd74705d86fa220ad91b817b3b44 100644 (file)
@@ -465,4 +465,4 @@ static int pci1723_detach(comedi_device * dev)
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_pci1723);
+COMEDI_PCI_INITCLEANUP(driver_pci1723, pci1723_pci_table);
index 37a2e1ba8f1f91a689bddf5ca02d5dcc0dbe8445..d43b12b0ee8770b5edecfd2fd3977aff9aa019ea 100644 (file)
@@ -86,7 +86,7 @@ typedef enum {
 // Advantech PCI-1736UP
 #define PCI1736_IDI        0    /* R:   Isolated digital input  0-15 */
 #define PCI1736_IDO        0    /* W:   Isolated digital output 0-15 */
-#define PCI1736_3_INT_EN        0x08    /* R/W: enable/disable interrupts */ 
+#define PCI1736_3_INT_EN        0x08    /* R/W: enable/disable interrupts */
 #define PCI1736_3_INT_RF        0x0c    /* R/W: set falling/raising edge for interrupts */
 #define PCI1736_3_INT_CLR       0x10    /* R/W: clear interrupts */
 #define PCI1736_BOARDID    4            /* R:   Board I/D switch for 1736UP */
@@ -1071,7 +1071,7 @@ static int pci_dio_detach(comedi_device * dev)
 /*
 ==============================================================================
 */
-COMEDI_INITCLEANUP(driver_pci_dio);
+COMEDI_PCI_INITCLEANUP(driver_pci_dio, pci_dio_pci_table);
 /*
 ==============================================================================
 */
index 482a3e2ad12d1d5065de49d3705c2f6919d28479..fe2ee77a8e0ea009f9680c2bc98ba1dde2a9a11f 100644 (file)
@@ -471,7 +471,7 @@ static comedi_driver driver_amplc_dio200 = {
       num_names:sizeof(dio200_boards) / sizeof(dio200_board),
 };
 
-COMEDI_INITCLEANUP(driver_amplc_dio200);
+COMEDI_PCI_INITCLEANUP(driver_amplc_dio200, dio200_pci_table);
 
 /*
  * This function looks for a PCI device matching the requested board name,
index 1f70aa86be4b744a4e31590db9b100f9eed67f06..7ca5090344d3060b2b9dc9d54803a8ab0173b0c0 100644 (file)
@@ -165,7 +165,7 @@ static comedi_driver driver_amplc_pc236 = {
       num_names:sizeof(pc236_boards) / sizeof(pc236_board),
 };
 
-COMEDI_INITCLEANUP(driver_amplc_pc236);
+COMEDI_PCI_INITCLEANUP(driver_amplc_pc236, pc236_pci_table);
 
 static int pc236_request_region(unsigned long from, unsigned long extent);
 static void pc236_intr_disable(comedi_device * dev);
index 0e41cc013eb5f19c95353b9a4763fbf5a19b049e..92d8c7ee3601d14892e4e62e30eb7c03a0f8e66a 100644 (file)
@@ -310,7 +310,7 @@ static int pc263_detach(comedi_device * dev)
                                comedi_pci_disable(devpriv->pci_dev);
                        }
                        pci_dev_put(devpriv->pci_dev);
-               } else 
+               } else
 #endif
                {
                        if (dev->iobase) {
@@ -377,4 +377,4 @@ static int pc263_dio_insn_config(comedi_device * dev, comedi_subdevice * s,
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_amplc_pc263);
+COMEDI_PCI_INITCLEANUP(driver_amplc_pc263, pc263_pci_table);
index 886b340ee0dfa47add91d165adb7866d24e79146..e2788d87c14b0e5c20d90c70fd63e8f0321b6b7c 100644 (file)
@@ -428,7 +428,7 @@ static comedi_driver driver_amplc_pci224 = {
       num_names:sizeof(pci224_boards) / sizeof(pci224_board),
 };
 
-COMEDI_INITCLEANUP(driver_amplc_pci224);
+COMEDI_PCI_INITCLEANUP(driver_amplc_pci224, pci224_pci_table);
 
 /*
  * Called from the 'insn_write' function to perform a single write.
index 47ee16f51e74d20efc641e5fc1405ac880e437f9..67ad99210a4c4bacbc9ce81e13b616cec75db515 100644 (file)
@@ -50,7 +50,7 @@ Subdevices:
                 PCI230(+)    PCI260(+)
                 ---------    ---------
   Subdevices       3            1
-        0          AI           AI 
+        0          AI           AI
        1          AO
        2          DIO
 
@@ -58,10 +58,10 @@ AI Subdevice:
 
   The AI subdevice has 16 single-ended channels or 8 differential
   channels.
-  
+
   The PCI230 and PCI260 cards have 12-bit resolution.  The PCI230+ and
   PCI260+ cards have 16-bit resolution.
-  
+
   For differential mode, use inputs 2N and 2N+1 for channel N (e.g. use
   inputs 14 and 15 for channel 7).  If the card is physically a PCI230
   or PCI260 then it actually uses a "pseudo-differential" mode where the
@@ -616,7 +616,7 @@ static comedi_driver driver_amplc_pci230 = {
       num_names:sizeof(pci230_boards) / sizeof(pci230_boards[0]),
 };
 
-COMEDI_INITCLEANUP(driver_amplc_pci230);
+COMEDI_PCI_INITCLEANUP(driver_amplc_pci230, pci230_pci_table);
 
 static int pci230_ai_rinsn(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data);
index e82b7302dcbb5f02573232b69c506de083474a7b..534d726c75f67a6a1764b7e287263ed5df4b9949 100644 (file)
@@ -1825,4 +1825,4 @@ static int nvram_read(comedi_device * dev, unsigned int address, uint8_t * data)
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_cb_pcidas);
+COMEDI_PCI_INITCLEANUP(driver_cb_pcidas, cb_pcidas_pci_table);
index f7e213477f28ab043a70f853d2fa10776f07af4d..ead9f11c80cc09af7e88b0fea43f68813c278c83 100644 (file)
@@ -1198,7 +1198,7 @@ static void enable_ai_interrupts(comedi_device * dev, const comedi_cmd * cmd);
 static unsigned int get_ao_divisor(unsigned int ns, unsigned int flags);
 static void load_ao_dma(comedi_device * dev, const comedi_cmd * cmd);
 
-COMEDI_INITCLEANUP(driver_cb_pcidas);
+COMEDI_PCI_INITCLEANUP(driver_cb_pcidas, pcidas64_pci_table);
 
 static unsigned int ai_range_bits_6xxx(const comedi_device * dev,
        unsigned int range_index)
index 1902e1aadc0a240db67b5cff91683ebd0bd87d97..74b8fe036eb651ea6e1f2b174917888a2475d153 100644 (file)
@@ -838,4 +838,4 @@ static void cb_pcidda_calibrate(comedi_device * dev, unsigned int channel,
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_cb_pcidda);
+COMEDI_PCI_INITCLEANUP(driver_cb_pcidda, cb_pcidda_pci_table);
index 099a749d8bba762d1e659dfdbd39d3cbca970359..455c8d88dd970e15fcada1006eaab1fef4d9d3d3 100644 (file)
@@ -291,4 +291,4 @@ static int pcidio_detach(comedi_device * dev)
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_cb_pcidio);
+COMEDI_PCI_INITCLEANUP(driver_cb_pcidio, pcidio_pci_table);
index 50d80d8904d08ba12ad069461ffd853bd62446c7..e2e242f493488120e9a58a43341ecd48d5af809c 100644 (file)
@@ -481,4 +481,4 @@ static int cb_pcimdas_ao_rinsn(comedi_device * dev, comedi_subdevice * s,
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(driver_cb_pcimdas);
+COMEDI_PCI_INITCLEANUP(driver_cb_pcimdas, cb_pcimdas_pci_table);
index 4a8733f50453501718dcca475df7ec89dfb2f36c..ca11bfbfeb878d9b00d7ef9c0758505720f789d2 100644 (file)
@@ -195,7 +195,7 @@ MODULE_DESCRIPTION("Comedi low-level driver for the Computerboards PCIM-DDA "
        "series.  Currently only supports PCIM-DDA06-16 (which "
        "also happens to be the only board in this series. :) ) ");
 MODULE_LICENSE("GPL");
-COMEDI_INITCLEANUP_NOMODULE(cb_pcimdda_driver);
+COMEDI_PCI_INITCLEANUP_NOMODULE(cb_pcimdda_driver, pci_table);
 
 static int ao_winsn(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data);
index e3c362d11cf9072af4a78f37e6b5f98bcc2a164b..c1680add5bb154e90bc27f75a3a9352b7a271aa7 100644 (file)
@@ -227,4 +227,4 @@ static int contec_di_insn_bits(comedi_device * dev, comedi_subdevice * s,
        return 2;
 }
 
-COMEDI_INITCLEANUP(driver_contec);
+COMEDI_PCI_INITCLEANUP(driver_contec, contec_pci_table);
index ba5ff0bde4bc680611354028d962d9e6380b87b6..7ec0e73b485b0e9653724d43c7549cd1c1adc1c0 100644 (file)
@@ -31,7 +31,7 @@ Devices: [IOTech] DAQBoard/2000 (daqboard2000)
 Much of the functionality of this driver was determined from reading
 the source code for the Windows driver.
 
-The FPGA on the board requires initialization code, which can 
+The FPGA on the board requires initialization code, which can
 be loaded by comedi_config using the -i
 option.  The initialization code is available from http://www.comedi.org
 in the comedi_nonfree_firmware tarball.
@@ -43,26 +43,26 @@ Configuration options:
   PCI device found will be used.
 */
 /*
-   This card was obviously never intended to leave the Windows world, 
-   since it lacked all kind of hardware documentation (except for cable 
-   pinouts, plug and pray has something to catch up with yet). 
+   This card was obviously never intended to leave the Windows world,
+   since it lacked all kind of hardware documentation (except for cable
+   pinouts, plug and pray has something to catch up with yet).
 
-   With some help from our swedish distributor, we got the Windows sourcecode 
+   With some help from our swedish distributor, we got the Windows sourcecode
    for the card, and here are the findings so far.
 
    1. A good document that describes the PCI interface chip is found at:
       http://plx.plxtech.com/download/9080/databook/9080db-106.pdf
-     
+
    2. The initialization done so far is:
         a. program the FPGA (windows code sans a lot of error messages)
-       b. 
+       b.
 
-   3. Analog out seems to work OK with DAC's disabled, if DAC's are enabled, 
+   3. Analog out seems to work OK with DAC's disabled, if DAC's are enabled,
       you have to output values to all enabled DAC's until result appears, I
-      guess that it has something to do with pacer clocks, but the source 
+      guess that it has something to do with pacer clocks, but the source
       gives me no clues. I'll keep it simple so far.
 
-   4. Analog in. 
+   4. Analog in.
         Each channel in the scanlist seems to be controlled by four
        control words:
 
@@ -107,13 +107,13 @@ Configuration options:
                  |        +---------------- Unipolar
                  +------------------------- Correction gain high
 
-        
+
 
    999. The card seems to have an incredible amount of capabilities, but
         trying to reverse engineer them from the Windows source is beyond my
        patience.
 
-   
+
  */
 
 #include <linux/comedidev.h>
@@ -485,7 +485,7 @@ static int daqboard2000_ao_insn_write(comedi_device * dev, comedi_subdevice * s,
                        //comedi_udelay(2);
                }
                devpriv->ao_readback[chan] = data[i];
-               /*  
+               /*
                 * Since we never enabled the DAC's, we don't need to disable it...
                 * fpga->dacControl = (chan + 2) * 0x0010 | 0x0000; comedi_udelay(1000);
                 */
@@ -874,4 +874,4 @@ static int daqboard2000_detach(comedi_device * dev)
        return 0;
 }
 
-COMEDI_INITCLEANUP(driver_daqboard2000);
+COMEDI_PCI_INITCLEANUP(driver_daqboard2000, daqboard2000_pci_table);
index d239d885e1dde64fe00cd524196fd04148280f39..3a186184ab63ca32c73b5a160815bdc98b362e1e 100644 (file)
@@ -1038,7 +1038,7 @@ int das08_common_detach(comedi_device * dev)
        return 0;
 }
 
-COMEDI_INITCLEANUP(driver_das08);
+COMEDI_PCI_INITCLEANUP(driver_das08, das08_pci_table);
 
 EXPORT_SYMBOL_GPL(das08_common_attach);
 EXPORT_SYMBOL_GPL(das08_common_detach);
index 3c1f713a5253becc9df021c66ebb7daeede4143f..526c0cf0cca0cd826df964594676990c7bd2ff8f 100644 (file)
@@ -280,7 +280,7 @@ static comedi_driver driver_dt3000 = {
       detach:dt3000_detach,
 };
 
-COMEDI_INITCLEANUP(driver_dt3000);
+COMEDI_PCI_INITCLEANUP(driver_dt3000, dt3k_pci_table);
 
 static void dt3k_ai_empty_fifo(comedi_device * dev, comedi_subdevice * s);
 static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *arg,
index 7e27fade9419674213b2a0b3bb283412da382cfc..b80d592213bc6f870ac0056c39c42b78845a1201 100644 (file)
@@ -334,7 +334,7 @@ static comedi_driver driver_hpdi = {
       detach:hpdi_detach,
 };
 
-COMEDI_INITCLEANUP(driver_hpdi);
+COMEDI_PCI_INITCLEANUP(driver_hpdi, hpdi_pci_table);
 
 static int dio_config_insn(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data)
index ac2dfe88f7c183bbffe5486a70376e222d422d22..40f047a4e117062f8195c1ef8550e86895208f4c 100644 (file)
@@ -27,9 +27,9 @@ Author: Anders Blomdell <anders.blomdell@control.lth.se>
 Status: works
 Devices: [JR3] PCI force sensor board (jr3_pci)
 
-  The DSP on the board requires initialization code, which can 
-  be loaded by placing it in /lib/firmware/comedi.  
-  The initialization code should be somewhere on the media you got 
+  The DSP on the board requires initialization code, which can
+  be loaded by placing it in /lib/firmware/comedi.
+  The initialization code should be somewhere on the media you got
   with your card. One version is available from http://www.comedi.org
   in the comedi_nonfree_firmware tarball.
 
@@ -406,7 +406,7 @@ int read_idm_word(const u8 * data, size_t size, int *pos, unsigned int *val)
 {
        int result = 0;
        if (pos != 0 && val != 0) {
-               // Skip over non hex 
+               // Skip over non hex
                for (; *pos < size && !isxdigit(data[*pos]); (*pos)++) {
                }
                // Collect value
@@ -491,7 +491,7 @@ static int jr3_download_firmware(comedi_device * dev, const u8 * data,
                                                // printk("jr3_data, not tested\n");
                                                //        jr3[addr + 0x20000 * pnum] = data1;
                                        } else {
-                                               //  Download 24 bit program 
+                                               //  Download 24 bit program
                                                unsigned int data1, data2;
 
                                                more = more
@@ -547,7 +547,7 @@ static poll_delay_t jr3_pci_poll_subdevice(comedi_subdevice * s)
                                u16 serial_no = get_u16(&channel->serial_no);
                                if ((errors & (watch_dog | watch_dog2)) ||
                                        model_no == 0 || serial_no == 0) {
-                                       // Still no sensor, keep on polling. Since it takes up to 
+                                       // Still no sensor, keep on polling. Since it takes up to
                                        // 10 seconds for offsets to stabilize, polling each
                                        // second should suffice.
                                        result = poll_delay_min_max(1000, 2000);
@@ -758,7 +758,7 @@ static void jr3_pci_poll_dev(unsigned long data)
                        subdevpriv->next_time_max =
                                jiffies + msecs_to_jiffies(sub_delay.max);
                        if (sub_delay.max && sub_delay.max < delay) {
-                               // Wake up as late as possible -> poll as many channels as 
+                               // Wake up as late as possible -> poll as many channels as
                                // possible at once
                                delay = sub_delay.max;
                        }
@@ -911,7 +911,7 @@ static int jr3_pci_attach(comedi_device * dev, comedi_devconfig * it)
        }
        // TODO: use firmware to load preferred offset tables. Suggested format:
        // model serial Fx Fy Fz Mx My Mz\n
-       // 
+       //
        // comedi_load_firmware(dev, "jr3_offsets_table", jr3_download_firmware);
 
        // It takes a few milliseconds for software to settle
@@ -969,4 +969,4 @@ static int jr3_pci_detach(comedi_device * dev)
        return 0;
 }
 
-COMEDI_INITCLEANUP(driver_jr3_pci);
+COMEDI_PCI_INITCLEANUP(driver_jr3_pci, jr3_pci_pci_table);
index b13e9a4f28dd4c2a7e2e8ee3333402e5ebcc0c03..7e08bea86d727d16be2ee0da996416df7f024931 100644 (file)
@@ -93,7 +93,7 @@ static comedi_driver cnt_driver = {
       detach:cnt_detach,
 };
 
-COMEDI_INITCLEANUP(cnt_driver);
+COMEDI_PCI_INITCLEANUP(cnt_driver, cnt_pci_table);
 
 /*-- counter write ----------------------------------------------------------*/
 
index abc9c5d85213c82b684b70ec71305b2cd74b9684..c865b6157b233d2efe77bbd8803fad9859d10334 100644 (file)
@@ -2359,4 +2359,4 @@ static int me4000_cnt_insn_write(comedi_device * dev,
        return 1;
 }
 
-COMEDI_INITCLEANUP(driver_me4000);
+COMEDI_PCI_INITCLEANUP(driver_me4000, me4000_pci_table);
index 906537f64aaf82f24d1e71e8992e68efbbcda246..630fd8910f9f3000bab5d26bff3566153c5bf1ce 100644 (file)
@@ -258,7 +258,7 @@ static comedi_driver me_driver = {
       offset:sizeof(me_board_struct),
 };
 
-COMEDI_INITCLEANUP(me_driver);
+COMEDI_PCI_INITCLEANUP(me_driver, me_pci_table);
 
 //
 // Private data structure
index 9de115891b4501afa3a53feeeab35400858732dd..e5acc584a8c922423f043e5b04dfd377a2d2cb68 100644 (file)
@@ -84,8 +84,6 @@ static comedi_driver driver_ni6527 = {
       detach:ni6527_detach,
 };
 
-COMEDI_INITCLEANUP(driver_ni6527);
-
 typedef struct {
        int dev_id;
        const char *name;
@@ -484,3 +482,5 @@ static int ni6527_find_device(comedi_device * dev, int bus, int slot)
        mite_list_devices();
        return -EIO;
 }
+
+COMEDI_PCI_INITCLEANUP(driver_ni6527, ni6527_pci_table);
index 52cd5cc0841e183b2f910fa6508da61dd450fe1b..86e8b4d5e791a0fbc40a798ce632b31be3d0156f 100644 (file)
@@ -111,8 +111,6 @@ static comedi_driver driver_ni_65xx = {
       detach:ni_65xx_detach,
 };
 
-COMEDI_INITCLEANUP(driver_ni_65xx);
-
 typedef struct {
        int dev_id;
        const char *name;
@@ -803,3 +801,5 @@ static int ni_65xx_find_device(comedi_device * dev, int bus, int slot)
        mite_list_devices();
        return -EIO;
 }
+
+COMEDI_PCI_INITCLEANUP(driver_ni_65xx, ni_65xx_pci_table);
index 9e158ce0db3e8a47710c3d940846528f2afb88d0..bf51b2a71f6e8f83bf82275bd80e87911c8ba925 100644 (file)
@@ -457,7 +457,7 @@ static comedi_driver driver_ni_660x = {
       detach:ni_660x_detach,
 };
 
-COMEDI_INITCLEANUP(driver_ni_660x);
+COMEDI_PCI_INITCLEANUP(driver_ni_660x, ni_660x_pci_table);
 
 static int ni_660x_find_device(comedi_device * dev, int bus, int slot);
 static int ni_660x_set_pfi_routing(comedi_device * dev, unsigned chan,
index 31eb972665eced1ba80cbbeff892585a34c37a22..65d22bd68d2e700232d96418f07c9874827248fa 100644 (file)
@@ -118,7 +118,7 @@ static comedi_driver driver_ni_670x = {
       detach:ni_670x_detach,
 };
 
-COMEDI_INITCLEANUP(driver_ni_670x);
+COMEDI_PCI_INITCLEANUP(driver_ni_670x, ni_670x_pci_table);
 
 static comedi_lrange range_0_20mA = { 1, {RANGE_mA(0, 20)} };
 
index f33cd250323d4d77c655b46efc9327ecb817d7d2..cc58ca585aa759153197c8014a9705657a12a22c 100644 (file)
@@ -1986,7 +1986,7 @@ static void write_caldac(comedi_device * dev, unsigned int channel,
        devpriv->write_byte(devpriv->command5_bits, dev->iobase + COMMAND5_REG);
 }
 
-COMEDI_INITCLEANUP(driver_labpc);
+COMEDI_PCI_INITCLEANUP(driver_labpc, labpc_pci_table);
 
 EXPORT_SYMBOL_GPL(labpc_common_attach);
 EXPORT_SYMBOL_GPL(labpc_common_detach);
index bc260b8ad4e4c6af986f286a4107e8923067bd06..287131d50a14227d64a22d91ffaffbe1e5af9d5b 100644 (file)
@@ -298,8 +298,6 @@ static comedi_driver driver_pcidio = {
       detach:nidio_detach,
 };
 
-COMEDI_INITCLEANUP(driver_pcidio);
-
 typedef struct {
        int dev_id;
        const char *name;
@@ -1298,3 +1296,5 @@ static int nidio_find_device(comedi_device * dev, int bus, int slot)
        mite_list_devices();
        return -EIO;
 }
+
+COMEDI_PCI_INITCLEANUP(driver_pcidio, ni_pcidio_pci_table);
index 1daabf78860938cc1f5618e40366525132e557e3..3a90a214e3d433a2dde883348026d00c9f138035 100644 (file)
@@ -2259,4 +2259,4 @@ static int rtd_dio_insn_config(comedi_device * dev,
  * A convenient macro that defines init_module() and cleanup_module(),
  * as necessary.
  */
-COMEDI_INITCLEANUP(rtd520Driver);
+COMEDI_PCI_INITCLEANUP(rtd520Driver, rtd520_pci_table);
index 8d25a78100c0613173ce8e6e3ba2a67303203ea5..d32cf1fa41f6a47a1dfa504d9fe5193b4c8db590 100644 (file)
@@ -227,7 +227,7 @@ static dio_private *dio_private_word[]={
 #define devpriv ((s626_private *)dev->private)
 #define diopriv ((dio_private *)s->private)
 
-COMEDI_INITCLEANUP_NOMODULE(driver_s626);
+COMEDI_PCI_INITCLEANUP_NOMODULE(driver_s626, s626_pci_table);
 
 //ioctl routines
 static int s626_ai_insn_config(comedi_device * dev, comedi_subdevice * s,
index b0ffcabe74b08c68ecef8c57752770232c31cef1..77936aad8178b6fe502d7792cb741f0528a369fe 100644 (file)
@@ -212,7 +212,7 @@ static int skel_attach(comedi_device * dev, comedi_devconfig * it)
  * it is, this is the place to do it.  Otherwise, dev->board_ptr
  * should already be initialized.
  */
-       //dev->board_ptr = skel_probe(dev);
+       //dev->board_ptr = skel_probe(dev, it);
 
 /*
  * Initialize dev->board_name.  Note that we can use the "thisboard"
@@ -614,3 +614,6 @@ static int skel_dio_insn_config(comedi_device * dev, comedi_subdevice * s,
  * as necessary.
  */
 COMEDI_INITCLEANUP(driver_skel);
+/* If you are writing a PCI driver you should use COMEDI_PCI_INITCLEANUP instead.
+*/
+// COMEDI_PCI_INITCLEANUP(driver_skel, skel_pci_table)
index c094508350af17de47363a6b8e3c9c6cc08f59eb..11737a27b8aee1f32830e4c2ff95f283d560c810 100644 (file)
 
 #define COMEDI_INITCLEANUP(x)                                          \
        COMEDI_MODULE_MACROS            \
-       static int __init x ## _init_module(void)                       \
-               {return comedi_driver_register(&(x));}                  \
-       static void __exit x ## _cleanup_module(void)                   \
-               {comedi_driver_unregister(&(x));}                       \
-       module_init(x ## _init_module);                                 \
-       module_exit(x ## _cleanup_module);                                      \
+       COMEDI_INITCLEANUP_NOMODULE(x)
 
-#define COMEDI_PCI_INITCLEANUP(comedi_driver, pci_id_table) \
-       COMEDI_MODULE_MACROS \
+#define COMEDI_PCI_INITCLEANUP_NOMODULE(comedi_driver, pci_id_table) \
        static int __devinit comedi_driver ## _pci_probe(struct pci_dev *dev, \
                const struct pci_device_id *ent) \
        { \
        module_init(comedi_driver ## _init_module); \
        module_exit(comedi_driver ## _cleanup_module);
 
+#define COMEDI_PCI_INITCLEANUP(comedi_driver, pci_id_table) \
+       COMEDI_MODULE_MACROS \
+       COMEDI_PCI_INITCLEANUP_NOMODULE(comedi_driver, pci_id_table)
+
 #define PCI_VENDOR_ID_INOVA            0x104c
 #define PCI_VENDOR_ID_NATINST          0x1093
 #define PCI_VENDOR_ID_DATX             0x1116