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.majew...@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 <ma...@denx.de>

Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to