staging: comedi: daqboard2000: ioremap'ed addresses are resource_size_t

As mentioned by Ian Abbott, the pci address passed to ioremap
should be a resource_size_t not an unsigned long. Use a local
variable of that type to hold the pci_resource_start() that is
passed to ioremp().

Set the dev->iobase to a dummy non-zero value so that the "detach"
can use it as a flag to know that comedi_pci_disable() needs to
be called.

Reported-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
H Hartley Sweeten 2012-07-20 10:32:29 -07:00 committed by Greg Kroah-Hartman
parent 7e8401b23e
commit 325a01f38d
1 changed files with 7 additions and 7 deletions

View File

@ -740,6 +740,7 @@ static int daqboard2000_attach(struct comedi_device *dev,
{
struct pci_dev *pcidev;
struct comedi_subdevice *s;
resource_size_t pci_base;
void *aux_data;
unsigned int aux_len;
int result;
@ -759,11 +760,12 @@ static int daqboard2000_attach(struct comedi_device *dev,
"failed to enable PCI device and request regions\n");
return -EIO;
}
dev->iobase = pci_resource_start(pcidev, 2);
dev->iobase = 1; /* the "detach" needs this */
devpriv->plx =
ioremap(pci_resource_start(pcidev, 0), DAQBOARD2000_PLX_SIZE);
devpriv->daq = ioremap(dev->iobase, DAQBOARD2000_DAQ_SIZE);
pci_base = pci_resource_start(pcidev, 0);
devpriv->plx = ioremap(pci_base, DAQBOARD2000_PLX_SIZE);
pci_base = pci_resource_start(pcidev, 2);
devpriv->daq = ioremap(pci_base, DAQBOARD2000_DAQ_SIZE);
if (!devpriv->plx || !devpriv->daq)
return -ENOMEM;
@ -800,8 +802,6 @@ static int daqboard2000_attach(struct comedi_device *dev,
printk("Interrupt after is: %x\n", interrupt);
*/
dev->iobase = (unsigned long)devpriv->daq;
dev->board_name = this_board->name;
s = dev->subdevices + 0;
@ -825,7 +825,7 @@ static int daqboard2000_attach(struct comedi_device *dev,
s = dev->subdevices + 2;
result = subdev_8255_init(dev, s, daqboard2000_8255_cb,
(unsigned long)(dev->iobase + 0x40));
(unsigned long)(devpriv->daq + 0x40));
out:
return result;