[PATCH] usb: cdns3: continue probe even when USB PHY device does not exist
Roger Quadros
rogerq at kernel.org
Tue Jul 2 15:20:43 CEST 2024
On 02/07/2024 15:07, Siddharth Vadapalli wrote:
> Prior to commit cd295286c786 ("usb: cdns3: avoid error messages if phys
> don't exist"), cdns3_probe() errors out only on failing to initialize the
> USB2/USB3 PHY. However, since commit cd295286c786, absence of the PHY
> device is also treated as an error, resulting in a regression.
>
> Extend commit cd295286c786 to treat -ENODEV as an acceptable return value
> of generic_phy_get_by_name() and continue device probe as was the case
> prior to the commit.
>
> Fixes: cd295286c786 ("usb: cdns3: avoid error messages if phys don't exist")
> Signed-off-by: Siddharth Vadapalli <s-vadapalli at ti.com>
> ---
>
> Hello,
>
> This patch is based on commit
> b4cbd1a257 Merge tag 'u-boot-amlogic-20240701' of https://source.denx.de/u-boot/custodians/u-boot-amlogic into next
> of the next branch of U-Boot.
>
> Regards,
> Siddharth.
>
> drivers/usb/cdns3/core.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c
> index b4e931646b..5b3e32953e 100644
> --- a/drivers/usb/cdns3/core.c
> +++ b/drivers/usb/cdns3/core.c
> @@ -338,7 +338,7 @@ static int cdns3_probe(struct cdns3 *cdns)
> dev_err(dev, "USB2 PHY init failed: %d\n", ret);
> return ret;
> }
> - } else if (ret != -ENOENT && ret != -ENODATA) {
> + } else if (ret != -ENOENT && ret != -ENODATA && ret != -ENODEV) {
With this change we will not error out on a genuine error condition
that produces ENODEV.
If PHY phandle is not present the API should return ENOENT right?
static int __of_parse_phandle_with_args(const struct device_node *np,
...
{
...
/* Retrieve the phandle list property */
list = of_get_property(np, list_name, &size);
if (!list)
return -ENOENT;
Can you please check and point where the -ENODEV error is coming from?
> dev_err(dev, "Couldn't get USB2 PHY: %d\n", ret);
> return ret;
> }
> @@ -350,7 +350,7 @@ static int cdns3_probe(struct cdns3 *cdns)
> dev_err(dev, "USB3 PHY init failed: %d\n", ret);
> return ret;
> }
> - } else if (ret != -ENOENT && ret != -ENODATA) {
> + } else if (ret != -ENOENT && ret != -ENODATA && ret != -ENODEV) {
> dev_err(dev, "Couldn't get USB3 PHY: %d\n", ret);
> return ret;
> }
--
cheers,
-roger
More information about the U-Boot
mailing list