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 <hswee...@visionengravers.com>
Cc: Ian Abbott <abbo...@mev.co.uk>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/staging/comedi/drivers/adl_pci9118.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adl_pci9118.c 
b/drivers/staging/comedi/drivers/adl_pci9118.c
index 8653e42..f821427 100644
--- a/drivers/staging/comedi/drivers/adl_pci9118.c
+++ b/drivers/staging/comedi/drivers/adl_pci9118.c
@@ -197,7 +197,7 @@
 
 #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;
-- 
2.0.3

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to