staging: comedi: adl_pci9118: tidy up pci9118_set_chanlist()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 9 Sep 2014 20:05:46 +0000 (13:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 Sep 2014 21:34:25 +0000 (14:34 -0700)
Define some macros to set the 'chan' and 'range' bits in the chanlist
register. Use them to tidy up this function.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/adl_pci9118.c

index 8820eea78f0146e87109a86ad512d5671d294967..95d9f2c49961706b2de4e1734ebdea6f90b5cc4f 100644 (file)
 #define PCI9118_DIO_REG                        0x1c
 #define PCI9118_SOFTTRG_REG            0x20
 #define PCI9118_AI_CHANLIST_REG                0x24
+#define PCI9118_AI_CHANLIST_RANGE(x)   (((x) & 0x3) << 8)
+#define PCI9118_AI_CHANLIST_CHAN(x)    ((x) << 0)
 #define PCI9118_AI_BURST_NUM_REG       0x28
 #define PCI9118_AI_AUTOSCAN_MODE_REG   0x2c
 #define PCI9118_AI_CFG_REG             0x30
@@ -375,9 +377,11 @@ static void pci9118_set_chanlist(struct comedi_device *dev,
                                 int frontadd, int backadd)
 {
        struct pci9118_private *devpriv = dev->private;
+       unsigned int chan0 = CR_CHAN(chanlist[0]);
        unsigned int range0 = CR_RANGE(chanlist[0]);
        unsigned int aref0 = CR_AREF(chanlist[0]);
-       unsigned int scanquad, gain, ssh = 0x00;
+       unsigned int ssh = 0x00;
+       unsigned int val;
        int i;
 
        /*
@@ -397,37 +401,33 @@ static void pci9118_set_chanlist(struct comedi_device *dev,
        outl(0, dev->iobase + PCI9118_AI_AUTOSCAN_MODE_REG);
        outl(1, dev->iobase + PCI9118_AI_AUTOSCAN_MODE_REG);
 
-       if (frontadd) {         /* insert channels for S&H */
+       /* insert channels for S&H */
+       if (frontadd) {
+               val = PCI9118_AI_CHANLIST_CHAN(chan0) |
+                     PCI9118_AI_CHANLIST_RANGE(range0);
                ssh = devpriv->softsshsample;
                for (i = 0; i < frontadd; i++) {
-                                               /* store range list to card */
-                       scanquad = CR_CHAN(chanlist[0]);
-                                               /* get channel number; */
-                       gain = CR_RANGE(chanlist[0]);
-                                               /* get gain number */
-                       scanquad |= ((gain & 0x03) << 8);
-                       outl(scanquad | ssh,
-                            dev->iobase + PCI9118_AI_CHANLIST_REG);
+                       outl(val | ssh, dev->iobase + PCI9118_AI_CHANLIST_REG);
                        ssh = devpriv->softsshhold;
                }
        }
 
-       for (i = 0; i < n_chan; i++) {  /* store range list to card */
-               scanquad = CR_CHAN(chanlist[i]);        /* get channel number */
-               gain = CR_RANGE(chanlist[i]);           /* get gain number */
-               scanquad |= ((gain & 0x03) << 8);
-               outl(scanquad | ssh, dev->iobase + PCI9118_AI_CHANLIST_REG);
+       /* store chanlist */
+       for (i = 0; i < n_chan; i++) {
+               unsigned int chan = CR_CHAN(chanlist[i]);
+               unsigned int range = CR_RANGE(chanlist[i]);
+
+               val = PCI9118_AI_CHANLIST_CHAN(chan) |
+                     PCI9118_AI_CHANLIST_RANGE(range);
+               outl(val | ssh, dev->iobase + PCI9118_AI_CHANLIST_REG);
        }
 
-       if (backadd) {          /* insert channels for fit onto 32bit DMA */
-               for (i = 0; i < backadd; i++) { /* store range list to card */
-                       scanquad = CR_CHAN(chanlist[0]);
-                                                       /* get channel number */
-                       gain = CR_RANGE(chanlist[0]);   /* get gain number */
-                       scanquad |= ((gain & 0x03) << 8);
-                       outl(scanquad | ssh,
-                            dev->iobase + PCI9118_AI_CHANLIST_REG);
-               }
+       /* insert channels to fit onto 32bit DMA */
+       if (backadd) {
+               val = PCI9118_AI_CHANLIST_CHAN(chan0) |
+                     PCI9118_AI_CHANLIST_RANGE(range0);
+               for (i = 0; i < backadd; i++)
+                       outl(val | ssh, dev->iobase + PCI9118_AI_CHANLIST_REG);
        }
        /* close scan queue */
        outl(0, dev->iobase + PCI9118_AI_AUTOSCAN_MODE_REG);