staging: comedi: ni_labpc: remove *_ai_gain_bits tables
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 14 May 2013 00:07:24 +0000 (17:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 May 2013 23:03:44 +0000 (16:03 -0700)
The bits needed to set the analog input gain can be simply calculated
based on the 'range'.

The LabPC versions of the board do not have the '0x10' gain that the
LabPC+ board supports. By incrementing the range appropriately the
correct gain bits can still be calculated.

This allows removing the two gain tables, as well as the export, along
with the 'ai_range_code' data in the boardinfo.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/ni_labpc.c
drivers/staging/comedi/drivers/ni_labpc.h
drivers/staging/comedi/drivers/ni_labpc_cs.c
drivers/staging/comedi/drivers/ni_labpc_pci.c

index 7d6bd1b6ef724ede1bbc13b26b67bc09e5de10d1..7320009173103bec9e9f8b27dac2646dd887cc67 100644 (file)
@@ -84,7 +84,7 @@
 #define CMD1_REG               0x00    /* W: Command 1 reg */
 #define CMD1_MA(x)             (((x) & 0x7) << 0)
 #define CMD1_TWOSCMP           (1 << 3)
-#define CMD1_GAIN_MASK         (7 << 4)
+#define CMD1_GAIN(x)           (((x) & 0x7) << 4)
 #define CMD1_SCANEN            (1 << 7)
 #define CMD2_REG               0x01    /* W: Command 2 reg */
 #define CMD2_PRETRIG           (1 << 0)
@@ -149,11 +149,6 @@ enum scan_mode {
        MODE_MULT_CHAN_DOWN,
 };
 
-static const int labpc_plus_ai_gain_bits[] = {
-       0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
-       0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
-};
-
 static const struct comedi_lrange range_labpc_plus_ai = {
        16, {
                BIP_RANGE(5),
@@ -175,12 +170,6 @@ static const struct comedi_lrange range_labpc_plus_ai = {
        }
 };
 
-const int labpc_1200_ai_gain_bits[] = {
-       0x00, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
-       0x00, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
-};
-EXPORT_SYMBOL_GPL(labpc_1200_ai_gain_bits);
-
 static const struct comedi_lrange range_labpc_1200_ai = {
        14, {
                BIP_RANGE(5),
@@ -233,20 +222,17 @@ static inline void labpc_writeb(unsigned int byte, unsigned long address)
 static const struct labpc_boardinfo labpc_boards[] = {
        {
                .name                   = "lab-pc-1200",
-               .ai_range_code          = labpc_1200_ai_gain_bits,
                .ai_speed               = 10000,
                .ai_scan_up             = 1,
                .has_ao                 = 1,
                .is_labpc1200           = 1,
        }, {
                .name                   = "lab-pc-1200ai",
-               .ai_range_code          = labpc_1200_ai_gain_bits,
                .ai_speed               = 10000,
                .ai_scan_up             = 1,
                .is_labpc1200           = 1,
        }, {
                .name                   = "lab-pc+",
-               .ai_range_code          = labpc_plus_ai_gain_bits,
                .ai_speed               = 12000,
                .has_ao                 = 1,
        },
@@ -317,12 +303,21 @@ static void labpc_ai_set_chan_and_gain(struct comedi_device *dev,
        const struct labpc_boardinfo *board = comedi_board(dev);
        struct labpc_private *devpriv = dev->private;
 
+       if (board->is_labpc1200) {
+               /*
+                * The LabPC-1200 boards do not have a gain
+                * of '0x10'. Skip the range values that would
+                * result in this gain.
+                */
+               range += (range > 0) + (range > 7);
+       }
+
        /* munge channel bits for differential/scan disabled mode */
        if ((mode == MODE_SINGLE_CHAN || mode == MODE_SINGLE_CHAN_INTERVAL) &&
            aref == AREF_DIFF)
                chan *= 2;
        devpriv->cmd1 = CMD1_MA(chan);
-       devpriv->cmd1 |= board->ai_range_code[range];
+       devpriv->cmd1 |= CMD1_GAIN(range);
 
        devpriv->write_byte(devpriv->cmd1, dev->iobase + CMD1_REG);
 }
index a96d6ac4dd46276b8b8efbc068a89a6ff6c330c4..2cb407be93b71e39b74c557c858f6b497b2153e8 100644 (file)
@@ -28,7 +28,6 @@ enum transfer_type { fifo_not_empty_transfer, fifo_half_full_transfer,
 
 struct labpc_boardinfo {
        const char *name;
-       const int *ai_range_code;
        int ai_speed;                   /* maximum input speed in ns */
        unsigned ai_scan_up:1;          /* can auto scan up in ai channels */
        unsigned has_ao:1;              /* has analog outputs */
@@ -88,6 +87,4 @@ int labpc_common_attach(struct comedi_device *dev,
                        unsigned int irq, unsigned long isr_flags);
 void labpc_common_detach(struct comedi_device *dev);
 
-extern const int labpc_1200_ai_gain_bits[];
-
 #endif /* _NI_LABPC_H */
index 9d88bc095810a6f9d2c07e9828e4a679e61c7f24..883581eb3dbe4b4123b86a5da5bc6a698df2eb9b 100644 (file)
@@ -70,7 +70,6 @@ NI manuals:
 static const struct labpc_boardinfo labpc_cs_boards[] = {
        {
                .name                   = "daqcard-1200",
-               .ai_range_code          = labpc_1200_ai_gain_bits,
                .ai_speed               = 10000,
                .has_ao                 = 1,
                .is_labpc1200           = 1,
index 044f820d553886e2822fec87c02a2b28420aa5eb..1f80711bf3687813e424df600ef1bd6fef4937aa 100644 (file)
@@ -45,7 +45,6 @@ enum labpc_pci_boardid {
 static const struct labpc_boardinfo labpc_pci_boards[] = {
        [BOARD_NI_PCI1200] = {
                .name                   = "ni_pci-1200",
-               .ai_range_code          = labpc_1200_ai_gain_bits,
                .ai_speed               = 10000,
                .ai_scan_up             = 1,
                .has_ao                 = 1,