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:
parent
7e8401b23e
commit
325a01f38d
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue