Hi Lukasz, On Fri, 25 Apr 2025 at 16:32, Lukasz Czechowski <lukasz.czechow...@thaumatec.com> wrote: > > Currently the check in usb_onboard_hub_bind is relying on specific > compatible string for the Michrochip USB5744. Replace this with > more generic approach that will allow to add new types of devices > to the of_match table. Because the driver only needs to bind one > "half" of the hub, the peer-hub node is used to find out if it > was already done. In case peer-hub was bound, -ENODEV is returned. > > Signed-off-by: Lukasz Czechowski <lukasz.czechow...@thaumatec.com> > --- > common/usb_onboard_hub.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c > index 7fe62b043e6a..9f8c1a304cdf 100644 > --- a/common/usb_onboard_hub.c > +++ b/common/usb_onboard_hub.c > @@ -9,6 +9,7 @@ > > #include <asm/gpio.h> > #include <dm.h> > +#include <dm/device.h> > #include <dm/device_compat.h> > #include <i2c.h> > #include <linux/delay.h> > @@ -179,8 +180,8 @@ err: > static int usb_onboard_hub_bind(struct udevice *dev) > { > struct ofnode_phandle_args phandle; > - const void *fdt = gd->fdt_blob; > - int ret, off; > + struct udevice *peerdev; > + int ret; > > ret = dev_read_phandle_with_args(dev, "peer-hub", NULL, 0, 0, > &phandle); > if (ret == -ENOENT) { > @@ -193,10 +194,14 @@ static int usb_onboard_hub_bind(struct udevice *dev) > return ret; > } > > - off = ofnode_to_offset(phandle.node); > - ret = fdt_node_check_compatible(fdt, off, "usb424,5744"); > - if (!ret) > + ret = device_find_global_by_ofnode(phandle.node, &peerdev); > + if (ret) { > + dev_dbg(dev, "binding before peer-hub %s\n", > + ofnode_get_name(phandle.node)); > return 0; > + } > + > + dev_dbg(dev, "peer-hub %s has been bound\n", peerdev->name); > > return -ENODEV; > } >
Thanks for your work I'm currently trying to reorder my changes for the Odroid Amlogic platform on top of your patch series. However, I'm facing an issue where the probe is not getting called and it isn't working on the Odroid N2+ board. I'm struggling to identify the missing piece that's causing this failure. Could you share some pointers? # dm tree simple_bus 11 [ + ] dwc3-meson-g12a | `-- usb@ffe09000 usb_gadget 0 [ ] dwc2-udc-otg | |-- usb@ff400000 usb 0 [ + ] xhci-dwc3 | `-- usb@ff500000 usb_hub 0 [ + ] usb_hub | `-- usb_hub usb_hub 1 [ + ] usb_hub | |-- usb_hub usb_mass_s 0 [ + ] usb_mass_storage | | `-- usb_mass_storage blk 2 [ + ] usb_storage_blk | | |-- usb_mass_storage.lun0 partition 0 [ + ] blk_partition | | | `-- usb_mass_storage.lun0:1 bootdev 3 [ ] usb_bootdev | | `-- usb_mass_storage.lun0.bootdev usb_hub 2 [ + ] usb_hub | `-- usb_hub # dm devices usb_hub usb_kbd 062 keyboard <none> usb_mass_storage 066 usb_mass_storage usb_mass_storage usb_onboard_hub 128 usb_hub <none> usb_storage_blk 022 blk usb_mass_storage.lun0 Thanks -Anand