summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-03-06 15:57:51 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-11 10:10:16 -0700
commitd99fc2c3723e50c020bc1ca20107ecbf74d02e1f (patch)
tree3c85bf91df9d55cc080d6934805a33eb0016fe39 /drivers
parentfff7a2cc99726f3994b9709782bd3e251ceb1023 (diff)
downloadlwn-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.c51
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,