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

Anand Moon linux.amoon at gmail.com
Mon Apr 1 16:05:14 UTC 2019


Hi Krzysztof,

On Mon, 1 Apr 2019 at 18:25, Krzysztof Kozlowski <krzk at kernel.org> wrote:
>
> 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/

I did run checkpatch before on this, It did not spotted and error or warning.

> .... but you do not re-init the phy. The exynos_usb_init() performs
> the reset of usb3503 USB hub!
>

Yes that is needed as we do not get the usb back after "usb reset" command.

> >
> > 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.
>

Ok.

> 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
> >

Best Regards
-Anand


More information about the U-Boot mailing list