usb: host: ehci-generic: Make resets and clocks optional
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 ba96176ab7
:
=======================
Bus usb@1c14000: ehci_generic usb@1c14000: Failed to get resets (err=-2)
probe failed, error -2
=======================
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
parent
2ac0baab4a
commit
81755b8c20
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user