Staging: et131x: Correct WRAP bit handling
[safe/jmp/linux-2.6] / drivers / staging / comedi / drivers / ni_atmio.c
index f8dda9a..8ead311 100644 (file)
@@ -93,6 +93,7 @@ are not supported.
 
 */
 
+#include <linux/interrupt.h>
 #include "../comedidev.h"
 
 #include <linux/delay.h>
@@ -115,160 +116,160 @@ are not supported.
 #define MAX_N_CALDACS 32
 
 static const struct ni_board_struct ni_boards[] = {
-      {device_id:44,
-             isapnp_id:0x0000,/* XXX unknown */
-             name:     "at-mio-16e-1",
-             n_adchan:16,
-             adbits:   12,
-             ai_fifo_depth:8192,
-             alwaysdither:0,
-             gainlkup:ai_gain_16,
-             ai_speed:800,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:2048,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:1000,
-             has_8255:0,
-                       .num_p0_dio_channels = 8,
-             caldac:   {mb88341},
-               },
-      {device_id:25,
-             isapnp_id:0x1900,
-             name:     "at-mio-16e-2",
-             n_adchan:16,
-             adbits:   12,
-             ai_fifo_depth:2048,
-             alwaysdither:0,
-             gainlkup:ai_gain_16,
-             ai_speed:2000,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:2048,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:1000,
-             has_8255:0,
-                       .num_p0_dio_channels = 8,
-             caldac:   {mb88341},
-               },
-      {device_id:36,
-             isapnp_id:0x2400,
-             name:     "at-mio-16e-10",
-             n_adchan:16,
-             adbits:   12,
-             ai_fifo_depth:512,
-             alwaysdither:0,
-             gainlkup:ai_gain_16,
-             ai_speed:10000,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:0,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:10000,
-                       .num_p0_dio_channels = 8,
-             caldac:   {ad8804_debug},
-             has_8255:0,
-               },
-      {device_id:37,
-             isapnp_id:0x2500,
-             name:     "at-mio-16de-10",
-             n_adchan:16,
-             adbits:   12,
-             ai_fifo_depth:512,
-             alwaysdither:0,
-             gainlkup:ai_gain_16,
-             ai_speed:10000,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:0,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:10000,
-                       .num_p0_dio_channels = 8,
-             caldac:   {ad8804_debug},
-             has_8255:1,
-               },
-      {device_id:38,
-             isapnp_id:0x2600,
-             name:     "at-mio-64e-3",
-             n_adchan:64,
-             adbits:   12,
-             ai_fifo_depth:2048,
-             alwaysdither:0,
-             gainlkup:ai_gain_16,
-             ai_speed:2000,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:2048,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:1000,
-             has_8255:0,
-                       .num_p0_dio_channels = 8,
-             caldac:   {ad8804_debug},
-               },
-      {device_id:39,
-             isapnp_id:0x2700,
-             name:     "at-mio-16xe-50",
-             n_adchan:16,
-             adbits:   16,
-             ai_fifo_depth:512,
-             alwaysdither:1,
-             gainlkup:ai_gain_8,
-             ai_speed:50000,
-             n_aochan:2,
-             aobits:   12,
-             ao_fifo_depth:0,
-                       .ao_range_table = &range_bipolar10,
-             ao_unipolar:0,
-             ao_speed:50000,
-                       .num_p0_dio_channels = 8,
-             caldac:   {dac8800, dac8043},
-             has_8255:0,
-               },
-      {device_id:50,
-             isapnp_id:0x0000,/* XXX unknown */
-             name:     "at-mio-16xe-10",
-             n_adchan:16,
-             adbits:   16,
-             ai_fifo_depth:512,
-             alwaysdither:1,
-             gainlkup:ai_gain_14,
-             ai_speed:10000,
-             n_aochan:2,
-             aobits:   16,
-             ao_fifo_depth:2048,
-                       .ao_range_table = &range_ni_E_ao_ext,
-             ao_unipolar:1,
-             ao_speed:1000,
-                       .num_p0_dio_channels = 8,
-             caldac:   {dac8800, dac8043, ad8522},
-             has_8255:0,
-               },
-      {device_id:51,
-             isapnp_id:0x0000,/* XXX unknown */
-             name:     "at-ai-16xe-10",
-             n_adchan:16,
-             adbits:   16,
-             ai_fifo_depth:512,
-             alwaysdither:1,   /* unknown */
-             gainlkup:ai_gain_14,
-             ai_speed:10000,
-             n_aochan:0,
-             aobits:   0,
-             ao_fifo_depth:0,
-             ao_unipolar:0,
-                       .num_p0_dio_channels = 8,
-             caldac:   {dac8800, dac8043, ad8522},
-             has_8255:0,
-               }
+       {.device_id = 44,
+        .isapnp_id = 0x0000,   /* XXX unknown */
+        .name = "at-mio-16e-1",
+        .n_adchan = 16,
+        .adbits = 12,
+        .ai_fifo_depth = 8192,
+        .alwaysdither = 0,
+        .gainlkup = ai_gain_16,
+        .ai_speed = 800,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 2048,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 1000,
+        .has_8255 = 0,
+        .num_p0_dio_channels = 8,
+        .caldac = {mb88341},
+        },
+       {.device_id = 25,
+        .isapnp_id = 0x1900,
+        .name = "at-mio-16e-2",
+        .n_adchan = 16,
+        .adbits = 12,
+        .ai_fifo_depth = 2048,
+        .alwaysdither = 0,
+        .gainlkup = ai_gain_16,
+        .ai_speed = 2000,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 2048,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 1000,
+        .has_8255 = 0,
+        .num_p0_dio_channels = 8,
+        .caldac = {mb88341},
+        },
+       {.device_id = 36,
+        .isapnp_id = 0x2400,
+        .name = "at-mio-16e-10",
+        .n_adchan = 16,
+        .adbits = 12,
+        .ai_fifo_depth = 512,
+        .alwaysdither = 0,
+        .gainlkup = ai_gain_16,
+        .ai_speed = 10000,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 0,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 10000,
+        .num_p0_dio_channels = 8,
+        .caldac = {ad8804_debug},
+        .has_8255 = 0,
+        },
+       {.device_id = 37,
+        .isapnp_id = 0x2500,
+        .name = "at-mio-16de-10",
+        .n_adchan = 16,
+        .adbits = 12,
+        .ai_fifo_depth = 512,
+        .alwaysdither = 0,
+        .gainlkup = ai_gain_16,
+        .ai_speed = 10000,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 0,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 10000,
+        .num_p0_dio_channels = 8,
+        .caldac = {ad8804_debug},
+        .has_8255 = 1,
+        },
+       {.device_id = 38,
+        .isapnp_id = 0x2600,
+        .name = "at-mio-64e-3",
+        .n_adchan = 64,
+        .adbits = 12,
+        .ai_fifo_depth = 2048,
+        .alwaysdither = 0,
+        .gainlkup = ai_gain_16,
+        .ai_speed = 2000,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 2048,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 1000,
+        .has_8255 = 0,
+        .num_p0_dio_channels = 8,
+        .caldac = {ad8804_debug},
+        },
+       {.device_id = 39,
+        .isapnp_id = 0x2700,
+        .name = "at-mio-16xe-50",
+        .n_adchan = 16,
+        .adbits = 16,
+        .ai_fifo_depth = 512,
+        .alwaysdither = 1,
+        .gainlkup = ai_gain_8,
+        .ai_speed = 50000,
+        .n_aochan = 2,
+        .aobits = 12,
+        .ao_fifo_depth = 0,
+        .ao_range_table = &range_bipolar10,
+        .ao_unipolar = 0,
+        .ao_speed = 50000,
+        .num_p0_dio_channels = 8,
+        .caldac = {dac8800, dac8043},
+        .has_8255 = 0,
+        },
+       {.device_id = 50,
+        .isapnp_id = 0x0000,   /* XXX unknown */
+        .name = "at-mio-16xe-10",
+        .n_adchan = 16,
+        .adbits = 16,
+        .ai_fifo_depth = 512,
+        .alwaysdither = 1,
+        .gainlkup = ai_gain_14,
+        .ai_speed = 10000,
+        .n_aochan = 2,
+        .aobits = 16,
+        .ao_fifo_depth = 2048,
+        .ao_range_table = &range_ni_E_ao_ext,
+        .ao_unipolar = 1,
+        .ao_speed = 1000,
+        .num_p0_dio_channels = 8,
+        .caldac = {dac8800, dac8043, ad8522},
+        .has_8255 = 0,
+        },
+       {.device_id = 51,
+        .isapnp_id = 0x0000,   /* XXX unknown */
+        .name = "at-ai-16xe-10",
+        .n_adchan = 16,
+        .adbits = 16,
+        .ai_fifo_depth = 512,
+        .alwaysdither = 1,     /* unknown */
+        .gainlkup = ai_gain_14,
+        .ai_speed = 10000,
+        .n_aochan = 0,
+        .aobits = 0,
+        .ao_fifo_depth = 0,
+        .ao_unipolar = 0,
+        .num_p0_dio_channels = 8,
+        .caldac = {dac8800, dac8043, ad8522},
+        .has_8255 = 0,
+        }
 };
 
 static const int ni_irqpin[] =
-       { -1, -1, -1, 0, 1, 2, -1, 3, -1, -1, 4, 5, 6, -1, -1, 7 };
+    { -1, -1, -1, 0, 1, 2, -1, 3, -1, -1, 4, 5, 6, -1, -1, 7 };
 
 #define interrupt_pin(a)       (ni_irqpin[(a)])
 
@@ -278,8 +279,7 @@ static const int ni_irqpin[] =
 
 struct ni_private {
        struct pnp_dev *isapnp_dev;
-       NI_PRIVATE_COMMON
-};
+ NI_PRIVATE_COMMON};
 #define devpriv ((struct ni_private *)dev->private)
 
 /* How we access registers */
@@ -301,14 +301,14 @@ static void ni_atmio_win_out(struct comedi_device *dev, uint16_t data, int addr)
 {
        unsigned long flags;
 
-       comedi_spin_lock_irqsave(&devpriv->window_lock, flags);
+       spin_lock_irqsave(&devpriv->window_lock, flags);
        if ((addr) < 8) {
                ni_writew(data, addr * 2);
        } else {
                ni_writew(addr, Window_Address);
                ni_writew(data, Window_Data);
        }
-       comedi_spin_unlock_irqrestore(&devpriv->window_lock, flags);
+       spin_unlock_irqrestore(&devpriv->window_lock, flags);
 }
 
 static uint16_t ni_atmio_win_in(struct comedi_device *dev, int addr)
@@ -316,36 +316,37 @@ static uint16_t ni_atmio_win_in(struct comedi_device *dev, int addr)
        unsigned long flags;
        uint16_t ret;
 
-       comedi_spin_lock_irqsave(&devpriv->window_lock, flags);
+       spin_lock_irqsave(&devpriv->window_lock, flags);
        if (addr < 8) {
                ret = ni_readw(addr * 2);
        } else {
                ni_writew(addr, Window_Address);
                ret = ni_readw(Window_Data);
        }
-       comedi_spin_unlock_irqrestore(&devpriv->window_lock, flags);
+       spin_unlock_irqrestore(&devpriv->window_lock, flags);
 
        return ret;
 }
 
 static struct pnp_device_id device_ids[] = {
-       {.id = "NIC1900", .driver_data = 0},
-       {.id = "NIC2400", .driver_data = 0},
-       {.id = "NIC2500", .driver_data = 0},
-       {.id = "NIC2600", .driver_data = 0},
-       {.id = "NIC2700", .driver_data = 0},
+       {.id = "NIC1900",.driver_data = 0},
+       {.id = "NIC2400",.driver_data = 0},
+       {.id = "NIC2500",.driver_data = 0},
+       {.id = "NIC2600",.driver_data = 0},
+       {.id = "NIC2700",.driver_data = 0},
        {.id = ""}
 };
 
 MODULE_DEVICE_TABLE(pnp, device_ids);
 
-static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *it);
+static int ni_atmio_attach(struct comedi_device *dev,
+                          struct comedi_devconfig *it);
 static int ni_atmio_detach(struct comedi_device *dev);
 static struct comedi_driver driver_atmio = {
-      driver_name:"ni_atmio",
-      module:THIS_MODULE,
-      attach:ni_atmio_attach,
-      detach:ni_atmio_detach,
+       .driver_name = "ni_atmio",
+       .module = THIS_MODULE,
+       .attach = ni_atmio_attach,
+       .detach = ni_atmio_detach,
 };
 
 COMEDI_INITCLEANUP(driver_atmio);
@@ -362,7 +363,7 @@ static int ni_atmio_detach(struct comedi_device *dev)
        if (dev->iobase)
                release_region(dev->iobase, NI_SIZE);
        if (dev->irq) {
-               comedi_free_irq(dev->irq, dev);
+               free_irq(dev->irq, dev);
        }
        if (devpriv->isapnp_dev)
                pnp_device_detach(devpriv->isapnp_dev);
@@ -377,14 +378,17 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
 
        for (i = 0; i < n_ni_boards; i++) {
                isapnp_dev = pnp_find_dev(NULL,
-                       ISAPNP_VENDOR('N', 'I', 'C'),
-                       ISAPNP_FUNCTION(ni_boards[i].isapnp_id), NULL);
+                                         ISAPNP_VENDOR('N', 'I', 'C'),
+                                         ISAPNP_FUNCTION(ni_boards[i].
+                                                         isapnp_id), NULL);
 
                if (isapnp_dev == NULL || isapnp_dev->card == NULL)
                        continue;
 
                if (pnp_device_attach(isapnp_dev) < 0) {
-                       printk("ni_atmio: %s found but already active, skipping.\n", ni_boards[i].name);
+                       printk
+                           ("ni_atmio: %s found but already active, skipping.\n",
+                            ni_boards[i].name);
                        continue;
                }
                if (pnp_activate_dev(isapnp_dev) < 0) {
@@ -392,7 +396,7 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
                        return -EAGAIN;
                }
                if (!pnp_port_valid(isapnp_dev, 0)
-                       || !pnp_irq_valid(isapnp_dev, 0)) {
+                   || !pnp_irq_valid(isapnp_dev, 0)) {
                        pnp_device_detach(isapnp_dev);
                        printk("ni_atmio: pnp invalid port or irq, aborting\n");
                        return -ENOMEM;
@@ -405,7 +409,8 @@ static int ni_isapnp_find_board(struct pnp_dev **dev)
        return 0;
 }
 
-static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
+static int ni_atmio_attach(struct comedi_device *dev,
+                          struct comedi_devconfig *it)
 {
        struct pnp_dev *isapnp_dev;
        int ret;
@@ -414,8 +419,10 @@ static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *i
        unsigned int irq;
 
        /* allocate private area */
-       if ((ret = ni_alloc_private(dev)) < 0)
+       ret = ni_alloc_private(dev);
+       if (ret < 0)
                return ret;
+
        devpriv->stc_writew = &ni_atmio_win_out;
        devpriv->stc_readw = &ni_atmio_win_in;
        devpriv->stc_writel = &win_out2;
@@ -452,7 +459,7 @@ static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *i
                printk(" board fingerprint:");
                for (i = 0; i < 16; i += 2) {
                        printk(" %04x %02x", inw(dev->iobase + i),
-                               inb(dev->iobase + i + 1));
+                              inb(dev->iobase + i + 1));
                }
        }
 #endif
@@ -476,8 +483,10 @@ static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *i
                        return -EINVAL;
                }
                printk(" ( irq = %u )", irq);
-               if ((ret = comedi_request_irq(irq, ni_E_interrupt,
-                                       NI_E_IRQ_FLAGS, "ni_atmio", dev)) < 0) {
+               ret = request_irq(irq, ni_E_interrupt, NI_E_IRQ_FLAGS,
+                                 "ni_atmio", dev);
+
+               if (ret < 0) {
                        printk(" irq not available\n");
                        return -EINVAL;
                }
@@ -486,7 +495,8 @@ static int ni_atmio_attach(struct comedi_device *dev, struct comedi_devconfig *i
 
        /* generic E series stuff in ni_mio_common.c */
 
-       if ((ret = ni_E_init(dev, it)) < 0) {
+       ret = ni_E_init(dev, it);
+       if (ret < 0) {
                return ret;
        }