staging: comedi: daqboard2000: ioremap'ed addresses are resource_size_t
PATCH 3/5 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.
Signed-off-by H Hartley Sweeten <[email protected]>
Reported-by Ian Abbott <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
--- drivers/staging/comedi/drivers/daqboard2000.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/staging/comedi/drivers/daqboard2000.c +7 -7
@@ -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;
Signature · 1 line
1.7.11