[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