diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2013-03-06 15:57:51 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-03-11 10:10:16 -0700 |
commit | d99fc2c3723e50c020bc1ca20107ecbf74d02e1f (patch) | |
tree | 3c85bf91df9d55cc080d6934805a33eb0016fe39 /drivers | |
parent | fff7a2cc99726f3994b9709782bd3e251ceb1023 (diff) | |
download | lwn-d99fc2c3723e50c020bc1ca20107ecbf74d02e1f.tar.gz lwn-d99fc2c3723e50c020bc1ca20107ecbf74d02e1f.zip |
staging: comedi: adl_pci8164: simplify axis register determination
The low-level i/o functions in this driver simply read/write a
register based on the channel in insn->chanspec and an offset.
Create a macro, PCI8164_AXIS(), that takes the channel number as
a parameter and returns the register value.
Remove the switch() statements used to figure out the 'axis_reg'
and use the new macro instead.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/comedi/drivers/adl_pci8164.c | 51 |
1 files changed, 5 insertions, 46 deletions
diff --git a/drivers/staging/comedi/drivers/adl_pci8164.c b/drivers/staging/comedi/drivers/adl_pci8164.c index 86d4fb6af142..57e21cf5edee 100644 --- a/drivers/staging/comedi/drivers/adl_pci8164.c +++ b/drivers/staging/comedi/drivers/adl_pci8164.c @@ -38,10 +38,7 @@ Configuration Options: not applicable, uses PCI auto config #include "comedi_fc.h" #include "8253.h" -#define PCI8164_AXIS_X 0x00 -#define PCI8164_AXIS_Y 0x08 -#define PCI8164_AXIS_Z 0x10 -#define PCI8164_AXIS_U 0x18 +#define PCI8164_AXIS(x) ((x) * 0x08) #define PCI8164_MSTS 0x00 #define PCI8164_SSTS 0x02 @@ -63,28 +60,9 @@ static void adl_pci8164_insn_read(struct comedi_device *dev, unsigned int *data, char *action, unsigned short offset) { - int axis, axis_reg; - - axis = CR_CHAN(insn->chanspec); - - switch (axis) { - case 0: - axis_reg = PCI8164_AXIS_X; - break; - case 1: - axis_reg = PCI8164_AXIS_Y; - break; - case 2: - axis_reg = PCI8164_AXIS_Z; - break; - case 3: - axis_reg = PCI8164_AXIS_U; - break; - default: - axis_reg = PCI8164_AXIS_X; - } + unsigned int chan = CR_CHAN(insn->chanspec); - data[0] = inw(dev->iobase + axis_reg + offset); + data[0] = inw(dev->iobase + PCI8164_AXIS(chan) + offset); } static int adl_pci8164_insn_read_msts(struct comedi_device *dev, @@ -133,28 +111,9 @@ static void adl_pci8164_insn_out(struct comedi_device *dev, unsigned int *data, char *action, unsigned short offset) { - unsigned int axis, axis_reg; - - axis = CR_CHAN(insn->chanspec); - - switch (axis) { - case 0: - axis_reg = PCI8164_AXIS_X; - break; - case 1: - axis_reg = PCI8164_AXIS_Y; - break; - case 2: - axis_reg = PCI8164_AXIS_Z; - break; - case 3: - axis_reg = PCI8164_AXIS_U; - break; - default: - axis_reg = PCI8164_AXIS_X; - } + unsigned int chan = CR_CHAN(insn->chanspec); - outw(data[0], dev->iobase + axis_reg + offset); + outw(data[0], dev->iobase + PCI8164_AXIS(chan) + offset); } static int adl_pci8164_insn_write_cmd(struct comedi_device *dev, |