Hi, On Thu, Jul 28, 2011 at 10:59:53PM +0800, tom.leiming@xxxxxxxxx wrote: > From: Ming Lei <tom.leiming@xxxxxxxxx> > > Obviously, disabling & put regulator and iounmap(hcd->regs) > are missed in .remove and failure handling path of .probe, > so add them. > > Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx> you didn't Cc Keshava again ;-) Keshava, if you have time, please give it a shot and reply with a Tested-by tag ;-) > --- > drivers/usb/host/ehci-omap.c | 16 ++++++++++++++++ > 1 files changed, 16 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c > index 55a57c2..4524032 100644 > --- a/drivers/usb/host/ehci-omap.c > +++ b/drivers/usb/host/ehci-omap.c > @@ -98,6 +98,18 @@ static void omap_ehci_soft_phy_reset(struct platform_device *pdev, u8 port) > } > } > > +static void disable_put_regulator( > + struct ehci_hcd_omap_platform_data *pdata) > +{ > + int i; > + > + for (i = 0 ; i < OMAP3_HS_USB_PORTS ; i++) { > + if (pdata->regulator[i]) { > + regulator_disable(pdata->regulator[i]); > + regulator_put(pdata->regulator[i]); > + } > + } > +} > > /* configure so an HC device and id are always provided */ > /* always called with process context; sleeping is OK */ > @@ -231,9 +243,11 @@ err_add_hcd: > omap_usbhs_disable(dev); > > err_enable: > + disable_put_regulator(pdata); > usb_put_hcd(hcd); > > err_io: > + iounmap(regs); > return ret; > } > > @@ -253,6 +267,8 @@ static int ehci_hcd_omap_remove(struct platform_device *pdev) > > usb_remove_hcd(hcd); > omap_usbhs_disable(dev); > + disable_put_regulator(dev->platform_data); > + iounmap(hcd->regs); > usb_put_hcd(hcd); > return 0; > } > -- > 1.7.4.1 > -- balbi
Attachment:
signature.asc
Description: Digital signature