Commit 86d466b8 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: contec_pci_dio: define register map for board

Only one board type is supported by this driver. Instead of
passing the register offsets for the digital in/out ports in
the boardinfo, define the register map and use that to access
the ports.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8bba4439
...@@ -42,26 +42,28 @@ enum contec_model { ...@@ -42,26 +42,28 @@ enum contec_model {
struct contec_board { struct contec_board {
const char *name; const char *name;
int in_offs;
int out_offs;
}; };
static const struct contec_board contec_boards[] = { static const struct contec_board contec_boards[] = {
{"PIO1616L", 0, 2 }, {"PIO1616L", },
}; };
#define PCI_DEVICE_ID_PIO1616L 0x8172 #define PCI_DEVICE_ID_PIO1616L 0x8172
/*
* Register map
*/
#define PIO1616L_DI_REG 0x00
#define PIO1616L_DO_REG 0x02
static int contec_do_insn_bits(struct comedi_device *dev, static int contec_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn, unsigned int *data)
{ {
const struct contec_board *thisboard = comedi_board(dev);
if (data[0]) { if (data[0]) {
s->state &= ~data[0]; s->state &= ~data[0];
s->state |= data[0] & data[1]; s->state |= data[0] & data[1];
outw(s->state, dev->iobase + thisboard->out_offs); outw(s->state, dev->iobase + PIO1616L_DO_REG);
} }
return insn->n; return insn->n;
} }
...@@ -70,9 +72,7 @@ static int contec_di_insn_bits(struct comedi_device *dev, ...@@ -70,9 +72,7 @@ static int contec_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn, unsigned int *data)
{ {
const struct contec_board *thisboard = comedi_board(dev); data[1] = inw(dev->iobase + PIO1616L_DI_REG);
data[1] = inw(dev->iobase + thisboard->in_offs);
return insn->n; return insn->n;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment