On Mon, 1 Apr 2019 at 13:53, Anand Moon <linux.am...@gmail.com> wrote: > > Some host controllers need addidional re-initialization
Please run spell-check. > after ehci_reset() so we add .init_after_reset callback > which is requires to reinit the phy after controller reset. s/requires/required/ .... but you do not re-init the phy. The exynos_usb_init() performs the reset of usb3503 USB hub! > > Signed-off-by: Anand Moon <linux.am...@gmail.com> > --- > drivers/usb/host/ehci-exynos.c | 20 +++++++++++++++++++- > 1 file changed, 19 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c > index b0f7bd4936..e6a542e092 100644 > --- a/drivers/usb/host/ehci-exynos.c > +++ b/drivers/usb/host/ehci-exynos.c > @@ -143,6 +143,23 @@ static void exynos5_setup_usb_phy(struct exynos_usb_phy > *usb) > EHCICTRL_ENAINCR16); > } > > +static int ehci_exynos_init_after_reset(struct ehci_ctrl *ehcntl) > +{ > + if (cpu_is_exynos4()) { > + if (proid_is_exynos4412()) { No need for double indentation. > + /* > + * "usb reset" cmd: restart re-initialize the usb > driver Just "reinitialize", not restart reinitialize. Best regards, Krzysztof > + */ > + exynos_usb_init(); > + } > + } > + return 0; > +} > + > +static const struct ehci_ops exynos_ehci_ops = { > + .init_after_reset = ehci_exynos_init_after_reset, > +}; > + > static void exynos4412_setup_usb_phy(struct exynos4412_usb_phy *usb) > { > writel(CLK_24MHZ, &usb->usbphyclk); > @@ -234,7 +251,8 @@ static int ehci_usb_probe(struct udevice *dev) > hcor = (struct ehci_hcor *)((uint32_t)ctx->hcd + > HC_LENGTH(ehci_readl(&ctx->hcd->cr_capbase))); > > - return ehci_register(dev, ctx->hcd, hcor, NULL, 0, USB_INIT_HOST); > + return ehci_register(dev, ctx->hcd, hcor, &exynos_ehci_ops, > + 0, USB_INIT_HOST); > } > > static int ehci_usb_remove(struct udevice *dev) > -- > 2.21.0 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot