[U-Boot] [RFC 3/6] usb: exynos: add init_after_reset for usb reset

Krzysztof Kozlowski krzk at kernel.org
Mon Apr 1 12:55:11 UTC 2019


On Mon, 1 Apr 2019 at 13:53, Anand Moon <linux.amoon at 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.amoon at 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
>


More information about the U-Boot mailing list