Re: [patch] omap: usb: ehci: fix use of hcd->regs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Felipe Balbi <me@xxxxxxxxxxxxxxx> [080912 11:23]:
> On Fri, Sep 12, 2008 at 08:50:33PM +0300, Felipe Balbi wrote:
> > On Fri, Sep 12, 2008 at 09:32:56AM -0700, David Brownell wrote:
> > > On Friday 12 September 2008, Felipe Balbi wrote:
> > > > -       hcd->regs = (void __iomem *) (int) IO_ADDRESS(hcd->rsrc_start);
> > > > +       hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
> > > 
> > > This is missing its sibling iounmap() ...
> > 
> > God... thanks Dave. Good catch. Patch coming soonish.
> 
> Here's the updated version. While at it, I'll send another patch getting
> rid of some other mistakes during probe.
> 
> ===== cut here ====
> 
> From 818dc8ebd261cdc59670fe1580248ad47f18a1de Mon Sep 17 00:00:00 2001
> From: Felipe Balbi <felipe.balbi@xxxxxxxxx>
> Date: Fri, 12 Sep 2008 21:07:09 +0300
> Subject: [PATCH] omap: usb: ehci: fix usb of hcd->regs
> 
> hcd->regs should be initialized by ioremaping hcd->rsrc_start and
> hcd->rsrc_len. Fix it for ehci-omap.c.

Pushing this today.

Tony

> 
> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxx>
> ---
>  drivers/usb/host/ehci-omap.c |   10 ++++++++--
>  1 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
> index 8f122e5..fff4195 100644
> --- a/drivers/usb/host/ehci-omap.c
> +++ b/drivers/usb/host/ehci-omap.c
> @@ -438,7 +438,11 @@ static int ehci_hcd_omap_drv_probe(struct platform_device *dev)
>  	hcd->rsrc_start = dev->resource[0].start;
>  	hcd->rsrc_len = dev->resource[0].end - dev->resource[0].start + 1;
>  
> -	hcd->regs = (void __iomem *) (int) IO_ADDRESS(hcd->rsrc_start);
> +	hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
> +	if (!hcd->regs) {
> +		dev_err(&dev->dev, "ioremap failed\n");
> +		return -ENOMEM;
> +	}
>  
>  	ehci = hcd_to_ehci(hcd);
>  	ehci->caps = hcd->regs;
> @@ -457,8 +461,9 @@ static int ehci_hcd_omap_drv_probe(struct platform_device *dev)
>  
>  	dev_dbg(hcd->self.controller, "ERR: add_hcd");
>  	omap_stop_ehc(dev, hcd);
> -
> +	iounmap(hcd->regs);
>  	usb_put_hcd(hcd);
> +
>  	return retval;
>  }
>  
> @@ -483,6 +488,7 @@ static int ehci_hcd_omap_drv_remove(struct platform_device *dev)
>  
>  	dev_dbg(&dev->dev, "ehci_hcd_omap_drv_remove()");
>  
> +	iounmap(hcd->regs);
>  	usb_remove_hcd(hcd);
>  	usb_put_hcd(hcd);
>  	omap_stop_ehc(dev, hcd);
> -- 
> 1.6.0.1.196.g01914
> 
> -- 
> balbi
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux