Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −9
Original line number Original line Diff line number Diff line
@@ -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,
			       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;
}
}