diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/comedi/drivers/pcmda12.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/drivers/staging/comedi/drivers/pcmda12.c b/drivers/staging/comedi/drivers/pcmda12.c index 4e214e9..bc6cdd1 100644 --- a/drivers/staging/comedi/drivers/pcmda12.c +++ b/drivers/staging/comedi/drivers/pcmda12.c @@ -49,7 +49,6 @@ Configuration Options: #include "../comedidev.h" -#define CHANS 8 #define IOSIZE 16 /* AI range is not configurable, it's set by jumpers on the board */ @@ -62,24 +61,10 @@ static const struct comedi_lrange pcmda12_ranges = { }; struct pcmda12_private { - - unsigned int ao_readback[CHANS]; + unsigned int ao_readback[8]; int simultaneous_xfer_mode; }; -static void zero_chans(struct comedi_device *dev) -{ - int i; - - for (i = 0; i < CHANS; ++i) { - - outb(0, dev->iobase + (i * 2)); - outb(0, dev->iobase + (i * 2) + 1); - } - /* Initiate transfer by reading one of the AO registers. */ - inb(dev->iobase); -} - static int pcmda12_ao_insn_write(struct comedi_device *dev, struct comedi_subdevice *s, struct comedi_insn *insn, @@ -130,6 +115,19 @@ static int pcmda12_ao_insn_read(struct comedi_device *dev, return insn->n; } +static void pcmda12_ao_reset(struct comedi_device *dev, + struct comedi_subdevice *s) +{ + int i; + + for (i = 0; i < s->n_chan; ++i) { + outb(0, dev->iobase + (i * 2)); + outb(0, dev->iobase + (i * 2) + 1); + } + /* Initiate transfer by reading one of the AO registers. */ + inb(dev->iobase); +} + static int pcmda12_attach(struct comedi_device *dev, struct comedi_devconfig *it) { @@ -155,13 +153,13 @@ static int pcmda12_attach(struct comedi_device *dev, s = &dev->subdevices[0]; s->type = COMEDI_SUBD_AO; s->subdev_flags = SDF_READABLE | SDF_WRITABLE; - s->n_chan = CHANS; + s->n_chan = 8; s->maxdata = 0x0fff; s->range_table = &pcmda12_ranges; s->insn_write = pcmda12_ao_insn_write; s->insn_read = pcmda12_ao_insn_read; - zero_chans(dev); /* clear out all the registers, basically */ + pcmda12_ao_reset(dev, s); return 1; } |