staging: comedi: adv_pci1723: tidy up DIO io_bits initialization

Tidy up the code that determines the initial io_bits (direction) of the
digital I/O subdevice and remove the magic numbers.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
H Hartley Sweeten 2014-11-21 14:22:33 -07:00 committed by Greg Kroah-Hartman
parent 0f35abd5ed
commit 348aeaa712
1 changed files with 7 additions and 16 deletions

View File

@ -144,6 +144,7 @@ static int pci1723_auto_attach(struct comedi_device *dev,
{ {
struct pci_dev *pcidev = comedi_to_pci_dev(dev); struct pci_dev *pcidev = comedi_to_pci_dev(dev);
struct comedi_subdevice *s; struct comedi_subdevice *s;
unsigned int val;
int ret; int ret;
int i; int i;
@ -195,22 +196,12 @@ static int pci1723_auto_attach(struct comedi_device *dev,
s->insn_config = pci1723_dio_insn_config; s->insn_config = pci1723_dio_insn_config;
s->insn_bits = pci1723_dio_insn_bits; s->insn_bits = pci1723_dio_insn_bits;
/* read DIO config */ /* get initial DIO direction and state */
switch (inw(dev->iobase + PCI1723_DIO_CTRL_REG) & 0x03) { val = inw(dev->iobase + PCI1723_DIO_CTRL_REG);
case 0x00: /* low byte output, high byte output */ if (!(val & PCI1723_DIO_CTRL_LDIO))
s->io_bits = 0xFFFF; s->io_bits |= 0x00ff; /* low byte output */
break; if (!(val & PCI1723_DIO_CTRL_HDIO))
case 0x01: /* low byte input, high byte output */ s->io_bits |= 0xff00; /* high byte output */
s->io_bits = 0xFF00;
break;
case 0x02: /* low byte output, high byte input */
s->io_bits = 0x00FF;
break;
case 0x03: /* low byte input, high byte input */
s->io_bits = 0x0000;
break;
}
/* read DIO port state */
s->state = inw(dev->iobase + PCI1723_DIO_DATA_REG); s->state = inw(dev->iobase + PCI1723_DIO_DATA_REG);
return 0; return 0;