staging: comedi: adl_pci9118: refactor 'rangelist_ai' in boardinfo
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Thu, 4 Sep 2014 17:39:32 +0000 (10:39 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Sep 2014 20:54:06 +0000 (13:54 -0700)
The boards supported by this driver either have "normal" or "high gain"
analog input ranges.

For aesthetics, replace the 'rangelist_ai' member in the boardinfo with
a bit-field flag 'is_hg' to indicate the "high gain" range is used.
Refactor the subdevice init to use the flag to set the correct range_table.

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 8653e42..f821427 100644 (file)
 
 #define PCI9118_HALF_FIFO_SZ   (1024 / 2)
 
-static const struct comedi_lrange range_pci9118dg_hr = {
+static const struct comedi_lrange pci9118_ai_range = {
        8, {
                BIP_RANGE(5),
                BIP_RANGE(2.5),
@@ -210,7 +210,7 @@ static const struct comedi_lrange range_pci9118dg_hr = {
        }
 };
 
-static const struct comedi_lrange range_pci9118hg = {
+static const struct comedi_lrange pci9118hg_ai_range = {
        8, {
                BIP_RANGE(5),
                BIP_RANGE(0.5),
@@ -232,7 +232,7 @@ struct boardtype {
        const char *name;               /* board name */
        int device_id;                  /* PCI device ID of card */
        int ai_maxdata;                 /* resolution of A/D */
-       const struct comedi_lrange *rangelist_ai;       /* rangelist for A/D */
+       unsigned int is_hg:1;
 };
 
 static const struct boardtype boardtypes[] = {
@@ -240,17 +240,15 @@ static const struct boardtype boardtypes[] = {
                .name           = "pci9118dg",
                .device_id      = 0x80d9,
                .ai_maxdata     = 0x0fff,
-               .rangelist_ai   = &range_pci9118dg_hr,
        }, {
                .name           = "pci9118hg",
                .device_id      = 0x80d9,
                .ai_maxdata     = 0x0fff,
-               .rangelist_ai   = &range_pci9118hg,
+               .is_hg          = 1,
        }, {
                .name           = "pci9118hr",
                .device_id      = 0x80d9,
                .ai_maxdata     = 0xffff,
-               .rangelist_ai   = &range_pci9118dg_hr,
        },
 };
 
@@ -1874,7 +1872,8 @@ static int pci9118_common_attach(struct comedi_device *dev, int disable_irq,
                s->n_chan = 16;
 
        s->maxdata = this_board->ai_maxdata;
-       s->range_table = this_board->rangelist_ai;
+       s->range_table = this_board->is_hg ? &pci9118hg_ai_range
+                                          : &pci9118_ai_range;
        s->insn_read = pci9118_insn_read_ai;
        if (dev->irq) {
                dev->read_subdev = s;