]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/comedi/drivers/ni_labpc.c
Merge 3.7-rc3 into staging-next
[karo-tx-linux.git] / drivers / staging / comedi / drivers / ni_labpc.c
index b5a19a0863fbb8ba3e7fe2842f66b0611992b054..ab51c2678b9d425762d182951d6a183ba0cb585f 100644 (file)
@@ -487,8 +487,6 @@ static const int dma_buffer_size = 0xff00;
 /* 2 bytes per sample */
 static const int sample_size = 2;
 
-#define devpriv ((struct labpc_private *)dev->private)
-
 static inline int labpc_counter_load(struct comedi_device *dev,
                                     unsigned long base_address,
                                     unsigned int counter_number,
@@ -504,6 +502,7 @@ static inline int labpc_counter_load(struct comedi_device *dev,
 int labpc_common_attach(struct comedi_device *dev, unsigned long iobase,
                        unsigned int irq, unsigned int dma_chan)
 {
+       struct labpc_private *devpriv = dev->private;
        struct comedi_subdevice *s;
        int i;
        unsigned long isr_flags;
@@ -700,15 +699,19 @@ labpc_pci_find_boardinfo(struct pci_dev *pcidev)
 static int __devinit labpc_attach_pci(struct comedi_device *dev,
                                      struct pci_dev *pcidev)
 {
+       struct labpc_private *devpriv;
        unsigned long iobase;
        unsigned int irq;
        int ret;
 
        if (!IS_ENABLED(CONFIG_COMEDI_PCI_DRIVERS))
                return -ENODEV;
-       ret = alloc_private(dev, sizeof(struct labpc_private));
-       if (ret < 0)
-               return ret;
+
+       devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
+       if (!devpriv)
+               return -ENOMEM;
+       dev->private = devpriv;
+
        dev->board_ptr = labpc_pci_find_boardinfo(pcidev);
        if (!dev->board_ptr)
                return -ENODEV;
@@ -725,13 +728,15 @@ static int __devinit labpc_attach_pci(struct comedi_device *dev,
 
 static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 {
+       struct labpc_private *devpriv;
        unsigned long iobase = 0;
        unsigned int irq = 0;
        unsigned int dma_chan = 0;
 
-       /* allocate and initialize dev->private */
-       if (alloc_private(dev, sizeof(struct labpc_private)) < 0)
+       devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
+       if (!devpriv)
                return -ENOMEM;
+       dev->private = devpriv;
 
        /* get base address, irq etc. based on bustype */
        switch (thisboard->bustype) {
@@ -770,6 +775,7 @@ static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 
 void labpc_common_detach(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
        struct comedi_subdevice *s;
 
        if (!thisboard)
@@ -799,6 +805,8 @@ EXPORT_SYMBOL_GPL(labpc_common_detach);
 
 static void labpc_clear_adc_fifo(const struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
+
        devpriv->write_byte(0x1, dev->iobase + ADC_CLEAR_REG);
        devpriv->read_byte(dev->iobase + ADC_FIFO_REG);
        devpriv->read_byte(dev->iobase + ADC_FIFO_REG);
@@ -806,6 +814,7 @@ static void labpc_clear_adc_fifo(const struct comedi_device *dev)
 
 static int labpc_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
 {
+       struct labpc_private *devpriv = dev->private;
        unsigned long flags;
 
        spin_lock_irqsave(&dev->spinlock, flags);
@@ -1098,6 +1107,7 @@ static int labpc_ai_cmdtest(struct comedi_device *dev,
 
 static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 {
+       struct labpc_private *devpriv = dev->private;
        int channel, range, aref;
 #ifdef CONFIG_ISA_DMA_API
        unsigned long irq_flags;
@@ -1365,6 +1375,7 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 static irqreturn_t labpc_interrupt(int irq, void *d)
 {
        struct comedi_device *dev = d;
+       struct labpc_private *devpriv = dev->private;
        struct comedi_subdevice *s = dev->read_subdev;
        struct comedi_async *async;
        struct comedi_cmd *cmd;
@@ -1453,6 +1464,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d)
 /* read all available samples from ai fifo */
 static int labpc_drain_fifo(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
        unsigned int lsb, msb;
        short data;
        struct comedi_async *async = dev->read_subdev->async;
@@ -1488,6 +1500,7 @@ static int labpc_drain_fifo(struct comedi_device *dev)
 #ifdef CONFIG_ISA_DMA_API
 static void labpc_drain_dma(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
        struct comedi_subdevice *s = dev->read_subdev;
        struct comedi_async *async = s->async;
        int status;
@@ -1541,6 +1554,8 @@ static void labpc_drain_dma(struct comedi_device *dev)
 
 static void handle_isa_dma(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
+
        labpc_drain_dma(dev);
 
        enable_dma(devpriv->dma_chan);
@@ -1555,6 +1570,8 @@ static void handle_isa_dma(struct comedi_device *dev)
 static void labpc_drain_dregs(struct comedi_device *dev)
 {
 #ifdef CONFIG_ISA_DMA_API
+       struct labpc_private *devpriv = dev->private;
+
        if (devpriv->current_transfer == isa_dma_transfer)
                labpc_drain_dma(dev);
 #endif
@@ -1565,6 +1582,7 @@ static void labpc_drain_dregs(struct comedi_device *dev)
 static int labpc_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
                          struct comedi_insn *insn, unsigned int *data)
 {
+       struct labpc_private *devpriv = dev->private;
        int i, n;
        int chan, range;
        int lsb, msb;
@@ -1654,6 +1672,7 @@ static int labpc_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
 static int labpc_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
                          struct comedi_insn *insn, unsigned int *data)
 {
+       struct labpc_private *devpriv = dev->private;
        int channel, range;
        unsigned long flags;
        int lsb, msb;
@@ -1695,6 +1714,8 @@ static int labpc_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
 static int labpc_ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
                          struct comedi_insn *insn, unsigned int *data)
 {
+       struct labpc_private *devpriv = dev->private;
+
        data[0] = devpriv->ao_value[CR_CHAN(insn->chanspec)];
 
        return 1;
@@ -1704,6 +1725,8 @@ static int labpc_calib_read_insn(struct comedi_device *dev,
                                 struct comedi_subdevice *s,
                                 struct comedi_insn *insn, unsigned int *data)
 {
+       struct labpc_private *devpriv = dev->private;
+
        data[0] = devpriv->caldac[CR_CHAN(insn->chanspec)];
 
        return 1;
@@ -1723,6 +1746,8 @@ static int labpc_eeprom_read_insn(struct comedi_device *dev,
                                  struct comedi_subdevice *s,
                                  struct comedi_insn *insn, unsigned int *data)
 {
+       struct labpc_private *devpriv = dev->private;
+
        data[0] = devpriv->eeprom_data[CR_CHAN(insn->chanspec)];
 
        return 1;
@@ -1779,6 +1804,7 @@ static unsigned int labpc_suggest_transfer_size(const struct comedi_cmd *cmd)
 static void labpc_adc_timing(struct comedi_device *dev, struct comedi_cmd *cmd,
                             enum scan_mode mode)
 {
+       struct labpc_private *devpriv = dev->private;
        /* max value for 16 bit counter in mode 2 */
        const int max_counter_value = 0x10000;
        /* min value for 16 bit counter in mode 2 */
@@ -1885,6 +1911,7 @@ static int labpc_dio_mem_callback(int dir, int port, int data,
 static void labpc_serial_out(struct comedi_device *dev, unsigned int value,
                             unsigned int value_width)
 {
+       struct labpc_private *devpriv = dev->private;
        int i;
 
        for (i = 1; i <= value_width; i++) {
@@ -1909,6 +1936,7 @@ static void labpc_serial_out(struct comedi_device *dev, unsigned int value,
 /* lowlevel read from eeprom */
 static unsigned int labpc_serial_in(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
        unsigned int value = 0;
        int i;
        const int value_width = 8;      /*  number of bits wide values are */
@@ -1938,6 +1966,7 @@ static unsigned int labpc_serial_in(struct comedi_device *dev)
 static unsigned int labpc_eeprom_read(struct comedi_device *dev,
                                      unsigned int address)
 {
+       struct labpc_private *devpriv = dev->private;
        unsigned int value;
        /*  bits to tell eeprom to expect a read */
        const int read_instruction = 0x3;
@@ -1970,6 +1999,7 @@ static unsigned int labpc_eeprom_read(struct comedi_device *dev,
 static int labpc_eeprom_write(struct comedi_device *dev,
                                unsigned int address, unsigned int value)
 {
+       struct labpc_private *devpriv = dev->private;
        const int write_enable_instruction = 0x6;
        const int write_instruction = 0x2;
        const int write_length = 8;     /*  8 bit write lengths to eeprom */
@@ -2027,6 +2057,7 @@ static int labpc_eeprom_write(struct comedi_device *dev,
 
 static unsigned int labpc_eeprom_read_status(struct comedi_device *dev)
 {
+       struct labpc_private *devpriv = dev->private;
        unsigned int value;
        const int read_status_instruction = 0x5;
        const int write_length = 8;     /*  8 bit write lengths to eeprom */
@@ -2056,6 +2087,8 @@ static unsigned int labpc_eeprom_read_status(struct comedi_device *dev)
 static void write_caldac(struct comedi_device *dev, unsigned int channel,
                         unsigned int value)
 {
+       struct labpc_private *devpriv = dev->private;
+
        if (value == devpriv->caldac[channel])
                return;
        devpriv->caldac[channel] = value;