summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2012-06-26 04:17:52 +0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-06-27 02:35:22 +0400
commite05b98b6425d46e7a0f77d16499407f6df35427f (patch)
treefb3d35146cefa9c2a8ef0be115f91b6a36610358
parentcf2592d06a4e37f98eba17d1abe32af7fe521d19 (diff)
downloadlinux-e05b98b6425d46e7a0f77d16499407f6df35427f.tar.xz
staging: comedi: cb_das16_cs: cleanup das16cs_ai_rinsn()
Cleanup to analog input read function. 1) Initialize the chan, range, and aref locale variables when they are declared. 2) Remove need for the static local variable. 3) Remove the unnecessary cast of inw()'s return value. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Cc: Frank Mori Hess <fmhess@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/comedi/drivers/cb_das16_cs.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c
index 11dc9b1bf22f..80e354028d2e 100644
--- a/drivers/staging/comedi/drivers/cb_das16_cs.c
+++ b/drivers/staging/comedi/drivers/cb_das16_cs.c
@@ -111,16 +111,11 @@ static int das16cs_ai_rinsn(struct comedi_device *dev,
struct comedi_insn *insn, unsigned int *data)
{
struct das16cs_private *devpriv = dev->private;
+ int chan = CR_CHAN(insn->chanspec);
+ int range = CR_RANGE(insn->chanspec);
+ int aref = CR_AREF(insn->chanspec);
int i;
int to;
- int aref;
- int range;
- int chan;
- static int range_bits[] = { 0x800, 0x000, 0x100, 0x200 };
-
- chan = CR_CHAN(insn->chanspec);
- aref = CR_AREF(insn->chanspec);
- range = CR_RANGE(insn->chanspec);
outw(chan, dev->iobase + 2);
@@ -129,7 +124,22 @@ static int das16cs_ai_rinsn(struct comedi_device *dev,
outw(devpriv->status1, dev->iobase + 4);
devpriv->status2 &= ~0xff00;
- devpriv->status2 |= range_bits[range];
+ switch (range) {
+ case 0:
+ devpriv->status2 |= 0x800;
+ break;
+ case 1:
+ devpriv->status2 |= 0x000;
+ break;
+ case 2:
+ devpriv->status2 |= 0x100;
+ break;
+ case 3:
+ devpriv->status2 |= 0x200;
+ break;
+ default:
+ return -EINVAL;
+ }
outw(devpriv->status2, dev->iobase + 6);
for (i = 0; i < insn->n; i++) {
@@ -144,7 +154,7 @@ static int das16cs_ai_rinsn(struct comedi_device *dev,
dev_dbg(dev->class_dev, "cb_das16_cs: ai timeout\n");
return -ETIME;
}
- data[i] = (unsigned short)inw(dev->iobase + 0);
+ data[i] = inw(dev->iobase + 0);
}
return i;