mirror of https://gitee.com/openkylin/linux.git
usb: musb: core: call init and shutdown for the usb phy
The phy's init routine must be called before it can be used. Do so in musb_init_controller and the matching shutdown in musb_remove. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
8a0859b65b
commit
39cee200c2
|
@ -2136,6 +2136,10 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||||
|
|
||||||
pm_runtime_get_sync(musb->controller);
|
pm_runtime_get_sync(musb->controller);
|
||||||
|
|
||||||
|
status = usb_phy_init(musb->xceiv);
|
||||||
|
if (status < 0)
|
||||||
|
goto err_usb_phy_init;
|
||||||
|
|
||||||
if (use_dma && dev->dma_mask) {
|
if (use_dma && dev->dma_mask) {
|
||||||
musb->dma_controller =
|
musb->dma_controller =
|
||||||
musb_dma_controller_create(musb, musb->mregs);
|
musb_dma_controller_create(musb, musb->mregs);
|
||||||
|
@ -2256,7 +2260,11 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
||||||
cancel_delayed_work_sync(&musb->deassert_reset_work);
|
cancel_delayed_work_sync(&musb->deassert_reset_work);
|
||||||
if (musb->dma_controller)
|
if (musb->dma_controller)
|
||||||
musb_dma_controller_destroy(musb->dma_controller);
|
musb_dma_controller_destroy(musb->dma_controller);
|
||||||
|
|
||||||
fail2_5:
|
fail2_5:
|
||||||
|
usb_phy_shutdown(musb->xceiv);
|
||||||
|
|
||||||
|
err_usb_phy_init:
|
||||||
pm_runtime_put_sync(musb->controller);
|
pm_runtime_put_sync(musb->controller);
|
||||||
|
|
||||||
fail2:
|
fail2:
|
||||||
|
@ -2317,6 +2325,8 @@ static int musb_remove(struct platform_device *pdev)
|
||||||
if (musb->dma_controller)
|
if (musb->dma_controller)
|
||||||
musb_dma_controller_destroy(musb->dma_controller);
|
musb_dma_controller_destroy(musb->dma_controller);
|
||||||
|
|
||||||
|
usb_phy_shutdown(musb->xceiv);
|
||||||
|
|
||||||
cancel_work_sync(&musb->irq_work);
|
cancel_work_sync(&musb->irq_work);
|
||||||
cancel_delayed_work_sync(&musb->finish_resume_work);
|
cancel_delayed_work_sync(&musb->finish_resume_work);
|
||||||
cancel_delayed_work_sync(&musb->deassert_reset_work);
|
cancel_delayed_work_sync(&musb->deassert_reset_work);
|
||||||
|
|
Loading…
Reference in New Issue