lkml.org 
[lkml]   [2022]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] usb: misc: onboard_usb_hub: Don't defer probing for 'incomplete' DT nodes
    On Tue, Dec 20, 2022 at 12:45:01AM +0000, Matthias Kaehlcke wrote:
    > Some boards have device tree nodes for USB hubs supported by the
    > onboard_usb_hub driver, but the nodes don't have all properties
    > needed for the driver to work properly (which is not necessarily
    > an error in the DT). Currently _find_onboard_hub() returns
    > -EPROBE_DEFER in such cases, which results in an unusable USB hub,
    > since successive probes fail in the same way. Use the absence of
    > the "vdd" supply as an indicator of such 'incomplete' DT nodes
    > and return -ENODEV.
    >
    > Fixes: 8bc063641ceb ("usb: misc: Add onboard_usb_hub driver")
    > Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
    > Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    > ---
    >
    > drivers/usb/misc/onboard_usb_hub.c | 9 +++++++++
    > 1 file changed, 9 insertions(+)
    >
    > diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_usb_hub.c
    > index d63c63942af1..2968da515016 100644
    > --- a/drivers/usb/misc/onboard_usb_hub.c
    > +++ b/drivers/usb/misc/onboard_usb_hub.c
    > @@ -363,6 +363,15 @@ static struct onboard_hub *_find_onboard_hub(struct device *dev)
    > hub = dev_get_drvdata(&pdev->dev);
    > put_device(&pdev->dev);
    >
    > + /*
    > + * Some boards have device tree nodes for USB hubs supported by this
    > + * driver, but the nodes don't have all properties needed for the driver
    > + * to work properly. Use the absence of the "vdd" supply as an indicator
    > + * of such nodes.
    > + */
    > + if (!of_get_property(pdev->dev.of_node, "vdd", NULL))
    > + return ERR_PTR(-ENODEV);

    Does this not break your original use case? Don't you want "vdd-supply"
    here?

    That said, this seems like the wrong property to look for both in
    principle and as it is described as optional by the binding:

    Documentation/devicetree/bindings/usb/realtek,rts5411.yaml

    It seems that you should use the compatible property and check that it
    holds one of the expected values:

    - usbbda,5411
    - usbbda,411
    rather than treat every hub node as describing a realtek hub (AFAIK,
    there is no generic binding for this yet).

    > +
    > /*
    > * The presence of drvdata ('hub') indicates that the platform driver
    > * finished probing. This handles the case where (conceivably) we could

    Johan

    \
     
     \ /
      Last update: 2023-03-26 23:15    [W:3.702 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site