Staging: comedi: Remove COMEDI_PCI_INITCLEANUP macro
[deliverable/linux.git] / drivers / staging / comedi / drivers / cb_pcidas64.c
index 0d9e92e59f9d4e5ec94e3ef709f899ee56407f7d..ba7c48ab6d92af631939c7af91b34f01d52ef8d8 100644 (file)
@@ -1101,9 +1101,9 @@ struct pcidas64_private {
        resource_size_t main_phys_iobase;
        resource_size_t dio_counter_phys_iobase;
        /*  base addresses (ioremapped) */
-       void *plx9080_iobase;
-       void *main_iobase;
-       void *dio_counter_iobase;
+       void __iomem *plx9080_iobase;
+       void __iomem *main_iobase;
+       void __iomem *dio_counter_iobase;
        /*  local address (used by dma controller) */
        uint32_t local0_iobase;
        uint32_t local1_iobase;
@@ -1237,7 +1237,43 @@ static unsigned int get_ao_divisor(unsigned int ns, unsigned int flags);
 static void load_ao_dma(struct comedi_device *dev,
                        const struct comedi_cmd *cmd);
 
-COMEDI_PCI_INITCLEANUP(driver_cb_pcidas, pcidas64_pci_table);
+static int __devinit driver_cb_pcidas_pci_probe(struct pci_dev *dev,
+                                               const struct pci_device_id *ent)
+{
+       return comedi_pci_auto_config(dev, driver_cb_pcidas.driver_name);
+}
+
+static void __devexit driver_cb_pcidas_pci_remove(struct pci_dev *dev)
+{
+       comedi_pci_auto_unconfig(dev);
+}
+
+static struct pci_driver driver_cb_pcidas_pci_driver = {
+       .id_table = pcidas64_pci_table,
+       .probe = &driver_cb_pcidas_pci_probe,
+       .remove = __devexit_p(&driver_cb_pcidas_pci_remove)
+};
+
+static int __init driver_cb_pcidas_init_module(void)
+{
+       int retval;
+
+       retval = comedi_driver_register(&driver_cb_pcidas);
+       if (retval < 0)
+               return retval;
+
+       driver_cb_pcidas_pci_driver.name = (char *)driver_cb_pcidas.driver_name;
+       return pci_register_driver(&driver_cb_pcidas_pci_driver);
+}
+
+static void __exit driver_cb_pcidas_cleanup_module(void)
+{
+       pci_unregister_driver(&driver_cb_pcidas_pci_driver);
+       comedi_driver_unregister(&driver_cb_pcidas);
+}
+
+module_init(driver_cb_pcidas_init_module);
+module_exit(driver_cb_pcidas_cleanup_module);
 
 static unsigned int ai_range_bits_6xxx(const struct comedi_device *dev,
                                       unsigned int range_index)
@@ -1316,7 +1352,7 @@ static inline int ao_cmd_is_supported(const struct pcidas64_board *board)
 static void init_plx9080(struct comedi_device *dev)
 {
        uint32_t bits;
-       void *plx_iobase = priv(dev)->plx9080_iobase;
+       void __iomem *plx_iobase = priv(dev)->plx9080_iobase;
 
        priv(dev)->plx_control_bits =
            readl(priv(dev)->plx9080_iobase + PLX_CONTROL_REG);
@@ -1406,7 +1442,7 @@ static void init_plx9080(struct comedi_device *dev)
 static int setup_subdevices(struct comedi_device *dev)
 {
        struct comedi_subdevice *s;
-       void *dio_8255_iobase;
+       void __iomem *dio_8255_iobase;
        int i;
 
        if (alloc_subdevices(dev, 10) < 0)
@@ -1432,7 +1468,6 @@ static int setup_subdevices(struct comedi_device *dev)
        s->do_cmdtest = ai_cmdtest;
        s->cancel = ai_cancel;
        if (board(dev)->layout == LAYOUT_4020) {
-               unsigned int i;
                uint8_t data;
                /*  set adc to read from inputs (not internal calibration sources) */
                priv(dev)->i2c_cal_range_bits = adc_src_4020_bits(4);
@@ -1614,7 +1649,7 @@ static void init_stc_registers(struct comedi_device *dev)
        disable_ai_pacing(dev);
 };
 
-int alloc_and_init_dma_members(struct comedi_device *dev)
+static int alloc_and_init_dma_members(struct comedi_device *dev)
 {
        int i;
 
@@ -1877,12 +1912,12 @@ static int detach(struct comedi_device *dev)
                if (priv(dev)->hw_dev) {
                        if (priv(dev)->plx9080_iobase) {
                                disable_plx_interrupts(dev);
-                               iounmap((void *)priv(dev)->plx9080_iobase);
+                               iounmap(priv(dev)->plx9080_iobase);
                        }
                        if (priv(dev)->main_iobase)
-                               iounmap((void *)priv(dev)->main_iobase);
+                               iounmap(priv(dev)->main_iobase);
                        if (priv(dev)->dio_counter_iobase)
-                               iounmap((void *)priv(dev)->dio_counter_iobase);
+                               iounmap(priv(dev)->dio_counter_iobase);
                        /*  free pci dma buffers */
                        for (i = 0; i < ai_dma_ring_count(board(dev)); i++) {
                                if (priv(dev)->ai_buffer[i])
@@ -2978,7 +3013,7 @@ static void drain_dma_buffers(struct comedi_device *dev, unsigned int channel)
        uint32_t next_transfer_addr;
        int j;
        int num_samples = 0;
-       void *pci_addr_reg;
+       void __iomem *pci_addr_reg;
 
        if (channel)
                pci_addr_reg =
@@ -3018,8 +3053,9 @@ static void drain_dma_buffers(struct comedi_device *dev, unsigned int channel)
         * unused buffer) */
 }
 
-void handle_ai_interrupt(struct comedi_device *dev, unsigned short status,
-                        unsigned int plx_status)
+static void handle_ai_interrupt(struct comedi_device *dev,
+                               unsigned short status,
+                               unsigned int plx_status)
 {
        struct comedi_subdevice *s = dev->read_subdev;
        struct comedi_async *async = s->async;
@@ -3229,7 +3265,7 @@ static irqreturn_t handle_interrupt(int irq, void *d)
        return IRQ_HANDLED;
 }
 
-void abort_dma(struct comedi_device *dev, unsigned int channel)
+static void abort_dma(struct comedi_device *dev, unsigned int channel)
 {
        unsigned long flags;
 
@@ -3424,7 +3460,7 @@ static void load_ao_dma(struct comedi_device *dev, const struct comedi_cmd *cmd)
 {
        unsigned int num_bytes;
        unsigned int next_transfer_addr;
-       void *pci_addr_reg =
+       void __iomem *pci_addr_reg =
            priv(dev)->plx9080_iobase + PLX_DMA0_PCI_ADDRESS_REG;
        unsigned int buffer_index;
 
@@ -3658,24 +3694,26 @@ static int ao_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
        return 0;
 }
 
-static int dio_callback(int dir, int port, int data, unsigned long iobase)
+static int dio_callback(int dir, int port, int data, unsigned long arg)
 {
+       void __iomem *iobase = (void __iomem *)arg;
        if (dir) {
-               writeb(data, (void *)(iobase + port));
+               writeb(data, iobase + port);
                DEBUG_PRINT("wrote 0x%x to port %i\n", data, port);
                return 0;
        } else {
-               return readb((void *)(iobase + port));
+               return readb(iobase + port);
        }
 }
 
-static int dio_callback_4020(int dir, int port, int data, unsigned long iobase)
+static int dio_callback_4020(int dir, int port, int data, unsigned long arg)
 {
+       void __iomem *iobase = (void __iomem *)arg;
        if (dir) {
-               writew(data, (void *)(iobase + 2 * port));
+               writew(data, iobase + 2 * port);
                return 0;
        } else {
-               return readw((void *)(iobase + 2 * port));
+               return readw(iobase + 2 * port);
        }
 }
 
@@ -3862,7 +3900,7 @@ static uint16_t read_eeprom(struct comedi_device *dev, uint8_t address)
        static const int read_command = 0x6;
        unsigned int bitstream = (read_command << 8) | address;
        unsigned int bit;
-       void *const plx_control_addr =
+       void __iomem * const plx_control_addr =
            priv(dev)->plx9080_iobase + PLX_CONTROL_REG;
        uint16_t value;
        static const int value_length = 16;
@@ -4185,7 +4223,8 @@ static const int i2c_low_udelay = 10;
 static void i2c_set_sda(struct comedi_device *dev, int state)
 {
        static const int data_bit = CTL_EE_W;
-       void *plx_control_addr = priv(dev)->plx9080_iobase + PLX_CONTROL_REG;
+       void __iomem *plx_control_addr = priv(dev)->plx9080_iobase +
+                                        PLX_CONTROL_REG;
 
        if (state) {
                /*  set data line high */
@@ -4204,7 +4243,8 @@ static void i2c_set_sda(struct comedi_device *dev, int state)
 static void i2c_set_scl(struct comedi_device *dev, int state)
 {
        static const int clock_bit = CTL_USERO;
-       void *plx_control_addr = priv(dev)->plx9080_iobase + PLX_CONTROL_REG;
+       void __iomem *plx_control_addr = priv(dev)->plx9080_iobase +
+                                        PLX_CONTROL_REG;
 
        if (state) {
                /*  set clock line high */
@@ -4299,3 +4339,7 @@ static void i2c_write(struct comedi_device *dev, unsigned int address,
        }
        i2c_stop(dev);
 }
+
+MODULE_AUTHOR("Comedi http://www.comedi.org");
+MODULE_DESCRIPTION("Comedi low-level driver");
+MODULE_LICENSE("GPL");
This page took 0.030376 seconds and 5 git commands to generate.