All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 67/90] staging: comedi: dt3000: remove 'phys_addr' from the private data
@ 2012-07-19  1:58 H Hartley Sweeten
  2012-07-19 12:07 ` Ian Abbott
  0 siblings, 1 reply; 2+ messages in thread
From: H Hartley Sweeten @ 2012-07-19  1:58 UTC (permalink / raw)
  To: Linux Kernel; +Cc: devel, abbotti, gregkh

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.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 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);
 	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);
 		}
-- 
1.7.11


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 67/90] staging: comedi: dt3000: remove 'phys_addr' from the private data
  2012-07-19  1:58 [PATCH 67/90] staging: comedi: dt3000: remove 'phys_addr' from the private data H Hartley Sweeten
@ 2012-07-19 12:07 ` Ian Abbott
  0 siblings, 0 replies; 2+ messages in thread
From: Ian Abbott @ 2012-07-19 12:07 UTC (permalink / raw)
  To: H Hartley Sweeten; +Cc: Linux Kernel, devel, Ian Abbott, gregkh

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@visionengravers.com>
> Cc: Ian Abbott <abbotti@mev.co.uk>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>   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@mev.co.uk>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-07-19 12:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-19  1:58 [PATCH 67/90] staging: comedi: dt3000: remove 'phys_addr' from the private data H Hartley Sweeten
2012-07-19 12:07 ` Ian Abbott

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.