diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2015-11-18 10:07:11 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-12-21 15:57:40 -0800 |
commit | 66f516e6a31e24972b1768453c2bd1abac273ff1 (patch) | |
tree | d8f8b151529b3a4038981dfeee2f384be06047af /drivers/staging/comedi | |
parent | 039c5c1b27e786cd92c130559800f88625988dee (diff) |
staging: comedi: adv_pci_dio: use the diosubd_data 'addr' for di/do s->private
Currently the di/do subdevices store a pointer to the diosubd_data in s->private.
The (*insn_bits) functions then use that to get to the 'addr' needed to access
the registers.
The only member of diosubd_data that is needed by the (*insn_bits) functions is
the 'addr'. For aesthetics, just store the 'addr' in s->private.
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>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r-- | drivers/staging/comedi/drivers/adv_pci_dio.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/staging/comedi/drivers/adv_pci_dio.c b/drivers/staging/comedi/drivers/adv_pci_dio.c index e620e34c70bc..51611c72f742 100644 --- a/drivers/staging/comedi/drivers/adv_pci_dio.c +++ b/drivers/staging/comedi/drivers/adv_pci_dio.c @@ -128,7 +128,7 @@ enum hw_cards_id { struct diosubd_data { int chans; /* num of chans or 8255 devices */ - int addr; /* PCI address ofset */ + unsigned long addr; /* PCI address ofset */ }; struct dio_boardtype { @@ -261,8 +261,8 @@ static int pci_dio_insn_bits_di_b(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - const struct diosubd_data *d = (const struct diosubd_data *)s->private; - unsigned long iobase = dev->iobase + d->addr; + unsigned long reg = (unsigned long)s->private; + unsigned long iobase = dev->iobase + reg; data[1] = inb(iobase); if (s->n_chan > 8) @@ -280,8 +280,8 @@ static int pci_dio_insn_bits_di_w(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - const struct diosubd_data *d = (const struct diosubd_data *)s->private; - unsigned long iobase = dev->iobase + d->addr; + unsigned long reg = (unsigned long)s->private; + unsigned long iobase = dev->iobase + reg; data[1] = inw(iobase); if (s->n_chan > 16) @@ -295,8 +295,8 @@ static int pci_dio_insn_bits_do_b(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - const struct diosubd_data *d = (const struct diosubd_data *)s->private; - unsigned long iobase = dev->iobase + d->addr; + unsigned long reg = (unsigned long)s->private; + unsigned long iobase = dev->iobase + reg; if (comedi_dio_update_state(s, data)) { outb(s->state & 0xff, iobase); @@ -318,8 +318,8 @@ static int pci_dio_insn_bits_do_w(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - const struct diosubd_data *d = (const struct diosubd_data *)s->private; - unsigned long iobase = dev->iobase + d->addr; + unsigned long reg = (unsigned long)s->private; + unsigned long iobase = dev->iobase + reg; if (comedi_dio_update_state(s, data)) { outw(s->state & 0xffff, iobase); @@ -505,7 +505,7 @@ static int pci_dio_auto_attach(struct comedi_device *dev, s->insn_bits = board->is_16bit ? pci_dio_insn_bits_di_w : pci_dio_insn_bits_di_b; - s->private = (void *)d; + s->private = (void *)d->addr; } } @@ -521,7 +521,7 @@ static int pci_dio_auto_attach(struct comedi_device *dev, s->insn_bits = board->is_16bit ? pci_dio_insn_bits_do_w : pci_dio_insn_bits_do_b; - s->private = (void *)d; + s->private = (void *)d->addr; } } @@ -546,7 +546,7 @@ static int pci_dio_auto_attach(struct comedi_device *dev, s->range_table = &range_digital; s->insn_bits = board->is_16bit ? pci_dio_insn_bits_di_w : pci_dio_insn_bits_di_b; - s->private = (void *)d; + s->private = (void *)d->addr; } if (board->timer_regbase) { |