]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
staging: comedi: pcl812: tidy up the digital subdevices
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 4 Mar 2014 18:29:54 +0000 (11:29 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Mar 2014 01:06:15 +0000 (17:06 -0800)
For aesthetics, tidy up the digtial subdevice code.

rename the register map defines for the digital input and output ports.

Move the two digital subdevice (*insn_bits) functions out of the analog
support functions. Tidy them up a bit during the move.

Add some whitespace to the subdevice init.

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/pcl812.c

index b91ce3838f3d79594cd0ea3fa478f8dc647aed95..bbd20ddddc7fba96b62e6b7acc6b2ad95ff19e8e 100644 (file)
 #define PCL812_AD_HI         5
 #define PCL812_DA1_HI        5
 #define PCL812_DA2_LO        6
-#define PCL812_DI_LO         6
 #define PCL812_DA2_HI        7
-#define PCL812_DI_HI         7
+#define PCL812_DI_LSB_REG                      0x06
+#define PCL812_DI_MSB_REG                      0x07
 #define PCL812_CLRINT        8
 #define PCL812_GAIN          9
 #define PCL812_MUX          10
 #define PCL812_MODE         11
 #define PCL812_CNTENABLE     10
 #define PCL812_SOFTTRIG             12
-#define PCL812_DO_LO        13
-#define PCL812_DO_HI        14
+#define PCL812_DO_LSB_REG                      0x0d
+#define PCL812_DO_MSB_REG                      0x0e
 
 #define PCL812_DRDY       0x10 /* =0 data ready */
 
@@ -730,31 +730,6 @@ static int pcl812_ao_insn_read(struct comedi_device *dev,
        return i;
 }
 
-static int pcl812_di_insn_bits(struct comedi_device *dev,
-                              struct comedi_subdevice *s,
-                              struct comedi_insn *insn, unsigned int *data)
-{
-       data[1] = inb(dev->iobase + PCL812_DI_LO);
-       data[1] |= inb(dev->iobase + PCL812_DI_HI) << 8;
-
-       return insn->n;
-}
-
-static int pcl812_do_insn_bits(struct comedi_device *dev,
-                              struct comedi_subdevice *s,
-                              struct comedi_insn *insn,
-                              unsigned int *data)
-{
-       if (comedi_dio_update_state(s, data)) {
-               outb(s->state & 0xff, dev->iobase + PCL812_DO_LO);
-               outb((s->state >> 8), dev->iobase + PCL812_DO_HI);
-       }
-
-       data[1] = s->state;
-
-       return insn->n;
-}
-
 static int pcl812_ai_cmdtest(struct comedi_device *dev,
                             struct comedi_subdevice *s, struct comedi_cmd *cmd)
 {
@@ -1093,6 +1068,32 @@ static int pcl812_ai_cancel(struct comedi_device *dev,
        return 0;
 }
 
+static int pcl812_di_insn_bits(struct comedi_device *dev,
+                              struct comedi_subdevice *s,
+                              struct comedi_insn *insn,
+                              unsigned int *data)
+{
+       data[1] = inb(dev->iobase + PCL812_DI_LSB_REG) |
+                 (inb(dev->iobase + PCL812_DI_MSB_REG) << 8);
+
+       return insn->n;
+}
+
+static int pcl812_do_insn_bits(struct comedi_device *dev,
+                              struct comedi_subdevice *s,
+                              struct comedi_insn *insn,
+                              unsigned int *data)
+{
+       if (comedi_dio_update_state(s, data)) {
+               outb(s->state & 0xff, dev->iobase + PCL812_DO_LSB_REG);
+               outb((s->state >> 8), dev->iobase + PCL812_DO_MSB_REG);
+       }
+
+       data[1] = s->state;
+
+       return insn->n;
+}
+
 static void pcl812_reset(struct comedi_device *dev)
 {
        const struct pcl812_board *board = comedi_board(dev);
@@ -1114,8 +1115,8 @@ static void pcl812_reset(struct comedi_device *dev)
                outb(0, dev->iobase + PCL812_DA1_LO);
                outb(0, dev->iobase + PCL812_DA1_HI);
                pcl812_start_pacer(dev, false);
-               outb(0, dev->iobase + PCL812_DO_HI);
-               outb(0, dev->iobase + PCL812_DO_LO);
+               outb(0, dev->iobase + PCL812_DO_MSB_REG);
+               outb(0, dev->iobase + PCL812_DO_LSB_REG);
                outb(devpriv->mode_reg_int | 0, dev->iobase + PCL812_MODE);
                outb(0, dev->iobase + PCL812_CLRINT);
                break;
@@ -1358,22 +1359,22 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        if (board->has_dio) {
                /* Digital Input subdevice */
                s = &dev->subdevices[subdev];
-               s->type = COMEDI_SUBD_DI;
-               s->subdev_flags = SDF_READABLE;
-               s->n_chan = 16;
-               s->maxdata = 1;
-               s->range_table = &range_digital;
-               s->insn_bits = pcl812_di_insn_bits;
+               s->type         = COMEDI_SUBD_DI;
+               s->subdev_flags = SDF_READABLE;
+               s->n_chan       = 16;
+               s->maxdata      = 1;
+               s->range_table  = &range_digital;
+               s->insn_bits    = pcl812_di_insn_bits;
                subdev++;
 
                /* Digital Output subdevice */
                s = &dev->subdevices[subdev];
-               s->type = COMEDI_SUBD_DO;
-               s->subdev_flags = SDF_WRITABLE;
-               s->n_chan = 16;
-               s->maxdata = 1;
-               s->range_table = &range_digital;
-               s->insn_bits = pcl812_do_insn_bits;
+               s->type         = COMEDI_SUBD_DO;
+               s->subdev_flags = SDF_WRITABLE;
+               s->n_chan       = 16;
+               s->maxdata      = 1;
+               s->range_table  = &range_digital;
+               s->insn_bits    = pcl812_do_insn_bits;
                subdev++;
        }