On 2012-07-19 02:58, H Hartley Sweeten wrote:
The 'phys_addr' variable in the private data is simply used as a flag for the detach function to know that the pci device has been enabled. Use the 'dev->iobase' variable instead as is more typical for other comedi pci drivers.
I think dev->iobase is really only meant to hold I/O port addresses, although it is wide enough to hold a 32-bit PCI memory address.
Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/dt3000.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/staging/comedi/drivers/dt3000.c b/drivers/staging/comedi/drivers/dt3000.c index 92558e7..3937e87 100644 --- a/drivers/staging/comedi/drivers/dt3000.c +++ b/drivers/staging/comedi/drivers/dt3000.c @@ -250,7 +250,6 @@ static const struct dt3k_boardtype dt3k_boardtypes[] = { struct dt3k_private { struct pci_dev *pci_dev; - resource_size_t phys_addr; void __iomem *io_addr; unsigned int lock; unsigned int ao_readback[2]; @@ -824,8 +823,8 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it) if (ret < 0) return ret; - devpriv->phys_addr = pci_resource_start(pcidev, 0); - devpriv->io_addr = ioremap(devpriv->phys_addr, DT3000_SIZE); + dev->iobase = pci_resource_start(pcidev, 0); + devpriv->io_addr = ioremap(dev->iobase, DT3000_SIZE);
dev->iobase is an unsigned long, which may be narrower than a resource_size_t. You should really pass the full-width resource_size_t value to ioremap().
You could even set dev->iobase to some dummy non-zero value as a flag for the detach() routine to call comedi_pci_disable() as dev->iobase is not used for anything else.
if (!devpriv->io_addr) return -ENOMEM; @@ -905,7 +904,7 @@ static void dt3000_detach(struct comedi_device *dev) free_irq(dev->irq, dev); if (devpriv) { if (devpriv->pci_dev) { - if (devpriv->phys_addr) + if (dev->iobase) comedi_pci_disable(devpriv->pci_dev); pci_dev_put(devpriv->pci_dev); }
-- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@xxxxxxxxx> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel