usb: host: ehci-omap: fix .remove and failure handling path of .probe(v1)
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@gmail.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Tested-by: Keshava Munegowda <Keshava_mgowda@ti.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
c240d78a8f
commit
d4aefec5da
1 changed files with 16 additions and 0 deletions
|
@ -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 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue