[PATCH] usb: host: ehci-generic: Make resets and clocks optional

Patrice CHOTARD patrice.chotard at foss.st.com
Wed Jun 8 09:00:57 CEST 2022


Hi Andre

On 6/8/22 01:42, Andre Przywara wrote:
> The generic EHCI binding does not *require* resets and clocks
> properties, and indeed for instance the Allwinner A20 SoCs does not
> need or define any resets in its DT.
> 
> Don't easily give up if clk_get_bulk() or reset_get_bulk() return an
> error, but check if that is due to the DT simply having no entries for
> either of them.
> 
> This fixes USB operation on all boards with an Allwinner A10 or A20 SoC,
> which were reporting an error after commit ba96176ab70e2999:
> =======================
> Bus usb at 1c14000: ehci_generic usb at 1c14000: Failed to get resets (err=-2)
> probe failed, error -2
> =======================
> 
> Signed-off-by: Andre Przywara <andre.przywara at arm.com>
> ---
>  drivers/usb/host/ehci-generic.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/host/ehci-generic.c b/drivers/usb/host/ehci-generic.c
> index 4734af03962..15267e9a05a 100644
> --- a/drivers/usb/host/ehci-generic.c
> +++ b/drivers/usb/host/ehci-generic.c
> @@ -69,7 +69,7 @@ static int ehci_usb_probe(struct udevice *dev)
>  
>  	err = 0;
>  	ret = clk_get_bulk(dev, &priv->clocks);
> -	if (ret) {
> +	if (ret && ret != -ENOENT) {
>  		dev_err(dev, "Failed to get clocks (ret=%d)\n", ret);
>  		return ret;
>  	}
> @@ -81,7 +81,7 @@ static int ehci_usb_probe(struct udevice *dev)
>  	}
>  
>  	err = reset_get_bulk(dev, &priv->resets);
> -	if (err) {
> +	if (ret && ret != -ENOENT) {
>  		dev_err(dev, "Failed to get resets (err=%d)\n", err);
>  		goto clk_err;
>  	}

Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>

Thanks
Patrice


More information about the U-Boot mailing list