mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 17:41:44 +00:00
usb: musb: don't leave PHY enabled on shutdown()
Some actions like musb_platform_exit are only performed on module removal and not on shutdown, which results in PHY being left enabled on reboot at least. This is sometimes causing strange failures after reboot (observed on OMAP3 pandora board), when DEVCTL does not report VBUS state correctly due to unknown reasons (possibly because of communication issues between musb IP and PHY). Running musb_platform_exit before reset seems to resolve that issue. Move some exit code from musb_remove() to musb_shutdown() so that it is performed on both module removal and shutdown/reset. Also convert the host check so that it doesn't need #ifdef. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
e2c3404523
commit
120d074c58
@ -1052,6 +1052,12 @@ static void musb_shutdown(struct platform_device *pdev)
|
||||
clk_put(musb->clock);
|
||||
spin_unlock_irqrestore(&musb->lock, flags);
|
||||
|
||||
if (!is_otg_enabled(musb) && is_host_enabled(musb))
|
||||
usb_remove_hcd(musb_to_hcd(musb));
|
||||
musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
|
||||
musb_platform_exit(musb);
|
||||
musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
|
||||
|
||||
/* FIXME power down */
|
||||
}
|
||||
|
||||
@ -2244,13 +2250,6 @@ static int __exit musb_remove(struct platform_device *pdev)
|
||||
*/
|
||||
musb_exit_debugfs(musb);
|
||||
musb_shutdown(pdev);
|
||||
#ifdef CONFIG_USB_MUSB_HDRC_HCD
|
||||
if (musb->board_mode == MUSB_HOST)
|
||||
usb_remove_hcd(musb_to_hcd(musb));
|
||||
#endif
|
||||
musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
|
||||
musb_platform_exit(musb);
|
||||
musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
|
||||
|
||||
musb_free(musb);
|
||||
iounmap(ctrl_base);
|
||||
|
Loading…
Reference in New Issue
Block a user