Commit 39cee200 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Felipe Balbi

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: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 8a0859b6
...@@ -2136,6 +2136,10 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) ...@@ -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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment