From f1770870fcffe31ee521dc6147636a52758c43ca Mon Sep 17 00:00:00 2001 From: Felipe Balbi Date: Fri, 12 Sep 2008 21:22:56 +0300 Subject: [PATCH] omap: usb: ehci: fix use of hcd->regs From 818dc8ebd261cdc59670fe1580248ad47f18a1de Mon Sep 17 00:00:00 2001 From: Felipe Balbi 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. Signed-off-by: Felipe Balbi Signed-off-by: Tony Lindgren --- drivers/usb/host/ehci-omap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c index 8f122e511e7..fff41951fe9 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); -- 2.41.0