
MSM uses the chipidea controller IP, however it requires to reinit the phy after controller reset. in EHCI mode there's a dedicated callback for it. In device mode however there's no such callback. Add implementaion of ci_init_after_reset() to implement the above requirement in case CI_UDC driver is used.
Signed-off-by: Ramon Fried ramon.fried@gmail.com ---
drivers/usb/host/ehci-msm.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c index 00d6bb8231..5c257ccf4d 100644 --- a/drivers/usb/host/ehci-msm.c +++ b/drivers/usb/host/ehci-msm.c @@ -121,6 +121,18 @@ static int ehci_usb_ofdata_to_platdata(struct udevice *dev) return 0; }
+#if defined(CONFIG_CI_UDC) +/* Little quirk that MSM needs with Chipidea controller + * Must reinit phy after reset + */ +void ci_init_after_reset(struct ehci_ctrl *ctrl) +{ + struct msm_ehci_priv *p = ctrl->priv; + + generic_phy_reset(&p->phy); +} +#endif + static const struct udevice_id ehci_usb_ids[] = { { .compatible = "qcom,ehci-host", }, { }