[U-Boot] [PATCH] usb: host: ehci: samsung: Move hcor initialization after usb phy setup
Marek Vasut
marex at denx.de
Thu Dec 10 17:20:50 CET 2015
On Thursday, December 10, 2015 at 04:32:25 PM, Lukasz Majewski wrote:
> With the old order of initialization the hcor pointer has been setup to
> the same address as Exynos EHCI base address (0x12110000 instead of
> 0x12110010).
> Such behaviour was caused by reading value of 0 instead of 0x10 from EHCI
> HCCPBASE register without doing proper clock initialization before.
>
> To fix this problem hcor initialization has been moved after USB PHY setup.
> Now ehci_readl(&ctx->hcd->cr_capbase) returns correct value.
>
> Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
> ---
> drivers/usb/host/ehci-exynos.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-exynos.c
> b/drivers/usb/host/ehci-exynos.c index 18e9251..bede04b 100644
> --- a/drivers/usb/host/ehci-exynos.c
> +++ b/drivers/usb/host/ehci-exynos.c
> @@ -219,14 +219,14 @@ static int ehci_usb_probe(struct udevice *dev)
>
> ctx->hcd = (struct ehci_hccr *)plat->hcd_base;
> ctx->usb = (struct exynos_usb_phy *)plat->phy_base;
> - hcor = (struct ehci_hcor *)((uint32_t)ctx->hcd +
> - HC_LENGTH(ehci_readl(&ctx->hcd->cr_capbase)));
>
> /* setup the Vbus gpio here */
> if (dm_gpio_is_valid(&plat->vbus_gpio))
> dm_gpio_set_value(&plat->vbus_gpio, 1);
>
> setup_usb_phy(ctx->usb);
> + hcor = (struct ehci_hcor *)((uint32_t)ctx->hcd +
> + HC_LENGTH(ehci_readl(&ctx->hcd->cr_capbase)));
Acked-by: Marek Vasut <marex at denx.de>
Best regards,
Marek Vasut
More information about the U-Boot
mailing list