[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