staging: comedi: me4000: fix ai_write_chanlist()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 5 Aug 2015 17:44:52 +0000 (10:44 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Aug 2015 22:03:28 +0000 (15:03 -0700)
Rename this function so it has namespace associated with the driver.

The last entry of the chanlist needs the ME4000_AI_LIST_LAST_ENTRY bit
set to end the list. Fix the function and tidy if up a bit.

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

index 1001d637948031696092ce928078d25ff59512a1..5b798a63589b86bf63636b900ef763cda3936a25 100644 (file)
@@ -652,25 +652,26 @@ static void ai_write_timer(struct comedi_device *dev,
        outl(chan_ticks - 1, dev->iobase + ME4000_AI_CHAN_TIMER_REG);
 }
 
-static int ai_write_chanlist(struct comedi_device *dev,
-                            struct comedi_subdevice *s, struct comedi_cmd *cmd)
+static int me4000_ai_write_chanlist(struct comedi_device *dev,
+                                   struct comedi_subdevice *s,
+                                   struct comedi_cmd *cmd)
 {
-       unsigned int entry;
-       unsigned int chan;
-       unsigned int rang;
-       unsigned int aref;
        int i;
 
        for (i = 0; i < cmd->chanlist_len; i++) {
-               chan = CR_CHAN(cmd->chanlist[i]);
-               rang = CR_RANGE(cmd->chanlist[i]);
-               aref = CR_AREF(cmd->chanlist[i]);
+               unsigned int chan = CR_CHAN(cmd->chanlist[i]);
+               unsigned int range = CR_RANGE(cmd->chanlist[i]);
+               unsigned int aref = CR_AREF(cmd->chanlist[i]);
+               unsigned int entry;
 
-               entry = chan | ME4000_AI_LIST_RANGE(rang);
+               entry = chan | ME4000_AI_LIST_RANGE(range);
 
                if (aref == AREF_DIFF)
                        entry |= ME4000_AI_LIST_INPUT_DIFFERENTIAL;
 
+               if (i == (cmd->chanlist_len - 1))
+                       entry |= ME4000_AI_LIST_LAST_ENTRY;
+
                outl(entry, dev->iobase + ME4000_AI_CHANNEL_LIST_REG);
        }
 
@@ -738,7 +739,7 @@ static int ai_prepare(struct comedi_device *dev,
        outl(tmp, dev->iobase + ME4000_AI_CTRL_REG);
 
        /* Write the channel list */
-       ai_write_chanlist(dev, s, cmd);
+       me4000_ai_write_chanlist(dev, s, cmd);
 
        return 0;
 }