staging: comedi: remove inline alloc_private()
[deliverable/linux.git] / drivers / staging / comedi / drivers / dt3000.c
index 3476cda0fff04e8e7df1f3f716f94a2406c799e5..46645759781d141d192cefb57771dd4732188ecc 100644 (file)
@@ -63,6 +63,8 @@ AO commands are not supported.
 #include "../comedidev.h"
 #include <linux/delay.h>
 
+#include "comedi_fc.h"
+
 #define PCI_VENDOR_ID_DT       0x1116
 
 static const struct comedi_lrange range_dt3000_ai = { 4, {
@@ -255,8 +257,6 @@ struct dt3k_private {
        unsigned int ai_rear;
 };
 
-#define devpriv ((struct dt3k_private *)dev->private)
-
 static void dt3k_ai_empty_fifo(struct comedi_device *dev,
                               struct comedi_subdevice *s);
 static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *arg,
@@ -271,6 +271,7 @@ static void debug_intr_flags(unsigned int flags);
 
 static int dt3k_send_cmd(struct comedi_device *dev, unsigned int cmd)
 {
+       struct dt3k_private *devpriv = dev->private;
        int i;
        unsigned int status = 0;
 
@@ -295,6 +296,8 @@ static unsigned int dt3k_readsingle(struct comedi_device *dev,
                                    unsigned int subsys, unsigned int chan,
                                    unsigned int gain)
 {
+       struct dt3k_private *devpriv = dev->private;
+
        writew(subsys, devpriv->io_addr + DPR_SubSys);
 
        writew(chan, devpriv->io_addr + DPR_Params(0));
@@ -308,6 +311,8 @@ static unsigned int dt3k_readsingle(struct comedi_device *dev,
 static void dt3k_writesingle(struct comedi_device *dev, unsigned int subsys,
                             unsigned int chan, unsigned int data)
 {
+       struct dt3k_private *devpriv = dev->private;
+
        writew(subsys, devpriv->io_addr + DPR_SubSys);
 
        writew(chan, devpriv->io_addr + DPR_Params(0));
@@ -324,13 +329,14 @@ static int debug_n_ints;
 static irqreturn_t dt3k_interrupt(int irq, void *d)
 {
        struct comedi_device *dev = d;
+       struct dt3k_private *devpriv = dev->private;
        struct comedi_subdevice *s;
        unsigned int status;
 
        if (!dev->attached)
                return IRQ_NONE;
 
-       s = dev->subdevices + 0;
+       s = &dev->subdevices[0];
        status = readw(devpriv->io_addr + DPR_Intr_Flag);
 #ifdef DEBUG
        debug_intr_flags(status);
@@ -375,6 +381,7 @@ static void debug_intr_flags(unsigned int flags)
 static void dt3k_ai_empty_fifo(struct comedi_device *dev,
                               struct comedi_subdevice *s)
 {
+       struct dt3k_private *devpriv = dev->private;
        int front;
        int rear;
        int count;
@@ -408,37 +415,19 @@ static int dt3k_ai_cmdtest(struct comedi_device *dev,
        int err = 0;
        int tmp;
 
-       /* step 1: make sure trigger sources are trivially valid */
+       /* Step 1 : check if triggers are trivially valid */
 
-       tmp = cmd->start_src;
-       cmd->start_src &= TRIG_NOW;
-       if (!cmd->start_src || tmp != cmd->start_src)
-               err++;
-
-       tmp = cmd->scan_begin_src;
-       cmd->scan_begin_src &= TRIG_TIMER;
-       if (!cmd->scan_begin_src || tmp != cmd->scan_begin_src)
-               err++;
-
-       tmp = cmd->convert_src;
-       cmd->convert_src &= TRIG_TIMER;
-       if (!cmd->convert_src || tmp != cmd->convert_src)
-               err++;
-
-       tmp = cmd->scan_end_src;
-       cmd->scan_end_src &= TRIG_COUNT;
-       if (!cmd->scan_end_src || tmp != cmd->scan_end_src)
-               err++;
-
-       tmp = cmd->stop_src;
-       cmd->stop_src &= TRIG_COUNT;
-       if (!cmd->stop_src || tmp != cmd->stop_src)
-               err++;
+       err |= cfc_check_trigger_src(&cmd->start_src, TRIG_NOW);
+       err |= cfc_check_trigger_src(&cmd->scan_begin_src, TRIG_TIMER);
+       err |= cfc_check_trigger_src(&cmd->convert_src, TRIG_TIMER);
+       err |= cfc_check_trigger_src(&cmd->scan_end_src, TRIG_COUNT);
+       err |= cfc_check_trigger_src(&cmd->stop_src, TRIG_COUNT);
 
        if (err)
                return 1;
 
-       /* step 2: make sure trigger sources are unique and mutually compatible */
+       /* Step 2a : make sure trigger sources are unique */
+       /* Step 2b : and mutually compatible */
 
        if (err)
                return 2;
@@ -566,6 +555,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
 
 static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 {
+       struct dt3k_private *devpriv = dev->private;
        struct comedi_cmd *cmd = &s->async->cmd;
        int i;
        unsigned int chan, range, aref;
@@ -634,6 +624,7 @@ static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
 
 static int dt3k_ai_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
 {
+       struct dt3k_private *devpriv = dev->private;
        int ret;
 
        writew(SUBS_AI, devpriv->io_addr + DPR_SubSys);
@@ -664,6 +655,7 @@ static int dt3k_ai_insn(struct comedi_device *dev, struct comedi_subdevice *s,
 static int dt3k_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
                        struct comedi_insn *insn, unsigned int *data)
 {
+       struct dt3k_private *devpriv = dev->private;
        int i;
        unsigned int chan;
 
@@ -680,6 +672,7 @@ static int dt3k_ao_insn_read(struct comedi_device *dev,
                             struct comedi_subdevice *s,
                             struct comedi_insn *insn, unsigned int *data)
 {
+       struct dt3k_private *devpriv = dev->private;
        int i;
        unsigned int chan;
 
@@ -692,6 +685,8 @@ static int dt3k_ao_insn_read(struct comedi_device *dev,
 
 static void dt3k_dio_config(struct comedi_device *dev, int bits)
 {
+       struct dt3k_private *devpriv = dev->private;
+
        /* XXX */
        writew(SUBS_DOUT, devpriv->io_addr + DPR_SubSys);
 
@@ -755,6 +750,7 @@ static int dt3k_mem_insn_read(struct comedi_device *dev,
                              struct comedi_subdevice *s,
                              struct comedi_insn *insn, unsigned int *data)
 {
+       struct dt3k_private *devpriv = dev->private;
        unsigned int addr = CR_CHAN(insn->chanspec);
        int i;
 
@@ -802,6 +798,7 @@ static struct pci_dev *dt3000_find_pci_dev(struct comedi_device *dev,
 
 static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 {
+       struct dt3k_private *devpriv;
        struct pci_dev *pcidev;
        struct comedi_subdevice *s;
        resource_size_t pci_base;
@@ -809,9 +806,10 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 
        dev_dbg(dev->class_dev, "dt3000:\n");
 
-       ret = alloc_private(dev, sizeof(struct dt3k_private));
-       if (ret < 0)
-               return ret;
+       devpriv = kzalloc(sizeof(*devpriv), GFP_KERNEL);
+       if (!devpriv)
+               return -ENOMEM;
+       dev->private = devpriv;
 
        pcidev = dt3000_find_pci_dev(dev, it);
        if (!pcidev)
@@ -842,7 +840,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        if (ret)
                return ret;
 
-       s = dev->subdevices;
+       s = &dev->subdevices[0];
        dev->read_subdev = s;
 
        /* ai subdevice */
@@ -857,7 +855,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        s->do_cmdtest = dt3k_ai_cmdtest;
        s->cancel = dt3k_ai_cancel;
 
-       s++;
+       s = &dev->subdevices[1];
        /* ao subsystem */
        s->type = COMEDI_SUBD_AO;
        s->subdev_flags = SDF_WRITABLE;
@@ -868,7 +866,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        s->len_chanlist = 1;
        s->range_table = &range_bipolar10;
 
-       s++;
+       s = &dev->subdevices[2];
        /* dio subsystem */
        s->type = COMEDI_SUBD_DIO;
        s->subdev_flags = SDF_READABLE | SDF_WRITABLE;
@@ -879,7 +877,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        s->len_chanlist = 8;
        s->range_table = &range_digital;
 
-       s++;
+       s = &dev->subdevices[3];
        /* mem subsystem */
        s->type = COMEDI_SUBD_MEMORY;
        s->subdev_flags = SDF_READABLE;
@@ -890,7 +888,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        s->range_table = &range_unknown;
 
 #if 0
-       s++;
+       s = &dev->subdevices[4];
        /* proc subsystem */
        s->type = COMEDI_SUBD_PROC;
 #endif
@@ -901,6 +899,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 static void dt3000_detach(struct comedi_device *dev)
 {
        struct pci_dev *pcidev = comedi_to_pci_dev(dev);
+       struct dt3k_private *devpriv = dev->private;
 
        if (dev->irq)
                free_irq(dev->irq, dev);
This page took 0.043056 seconds and 5 git commands to generate.