Commit 325a01f3 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

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: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7e8401b2
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -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;