Skip to content

Commit

Permalink
staging: comedi: contec_pci_dio: define register map for board
Browse files Browse the repository at this point in the history
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: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Aug 16, 2012
1 parent 8bba443 commit 86d466b
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions drivers/staging/comedi/drivers/contec_pci_dio.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,28 @@ enum contec_model {

struct contec_board {
const char *name;
int in_offs;
int out_offs;
};
static const struct contec_board contec_boards[] = {
{"PIO1616L", 0, 2 },
{"PIO1616L", },
};

#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,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{
const struct contec_board *thisboard = comedi_board(dev);

if (data[0]) {
s->state &= ~data[0];
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;
}
Expand All @@ -70,9 +72,7 @@ static int contec_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{
const struct contec_board *thisboard = comedi_board(dev);

data[1] = inw(dev->iobase + thisboard->in_offs);
data[1] = inw(dev->iobase + PIO1616L_DI_REG);

return insn->n;
}
Expand Down

0 comments on commit 86d466b

Please sign in to comment.