Hi Quentin,
On Tue, 13 May 2025 at 21:52, Quentin Schulz <quentin.sch...@cherry.de> wrote: > > Hi Anand, > > On 5/13/25 6:14 PM, Anand Moon wrote: > > Hi All, > > > > On Mon, 12 May 2025 at 13:51, Anand Moon via groups.io > > <linux.amoon=gmail....@groups.io> wrote: > >> > >> Hi Quentin, > >> > >> On Mon, 12 May 2025 at 12:36, Quentin Schulz <quentin.sch...@cherry.de> > >> wrote: > >>> > >>> Hi Anand, > >>> > >>> On 5/9/25 7:45 PM, Anand Moon wrote: > >>>> Hi Quentin, > >>>> > >>>> On Fri, 9 May 2025 at 17:21, Quentin Schulz <quentin.sch...@cherry.de> > >>>> wrote: > >>>>> > >>>>> Hi Neil, Anand, > >>>>> > >>>>> On 5/9/25 9:57 AM, Neil Armstrong wrote: > >>>>>> On 09/05/2025 09:02, Anand Moon wrote: > >>>>>>> Add conditional compilation for the usb5744_i2c_init() function based > >>>>>>> on the CONFIG_DM_I2C configuration, to avoid compilation failure. > >>>>>>> > >>>>>>> CC net/net-common.o > >>>>>>> AR net/built-in.o > >>>>>>> LDS u-boot.lds > >>>>>>> LD u-boot > >>>>>>> aarch64-linux-gnu-ld.bfd: common/usb_onboard_hub.o: in function > >>>>>>> `usb5744_i2c_init': > >>>>>>> /home/amoon/mainline/u-boot/amlogic/u-boot-maineline/common/ > >>>>>>> usb_onboard_hub.c:74:(.text.usb5744_i2c_init+0xfc): undefined > >>>>>>> reference to `i2c_get_chip' > >>>>>>> aarch64-linux-gnu-ld.bfd: /home/amoon/mainline/u-boot/amlogic/u-boot- > >>>>>>> maineline/common/usb_onboard_hub.c:89:(.text.usb5744_i2c_init+0x1a0): > >>>>>>> undefined reference to `dm_i2c_write' > >>>>>>> aarch64-linux-gnu-ld.bfd: /home/amoon/mainline/u-boot/amlogic/u-boot- > >>>>>>> maineline/common/usb_onboard_hub.c:96:(.text.usb5744_i2c_init+0x1c8): > >>>>>>> undefined reference to `dm_i2c_write' > >>>>>>> aarch64-linux-gnu-ld.bfd: /home/amoon/mainline/u-boot/amlogic/u-boot- > >>>>>>> maineline/common/usb_onboard_hub.c:104:(.text.usb5744_i2c_init+0x1f0): > >>>>>>> undefined reference to `dm_i2c_write' > >>>>>>> Segmentation fault (core dumped) > >>>>>>> make: *** [Makefile:1824: u-boot] Error 139 > >>>>>>> make: *** Deleting file 'u-boot' > >>>>>>> > >>>>>>> Signed-off-by: Anand Moon <linux.am...@gmail.com> > >>>>>>> --- > >>>>>>> common/usb_onboard_hub.c | 4 ++++ > >>>>>>> 1 file changed, 4 insertions(+) > >>>>>>> > >>>>>>> diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c > >>>>>>> index 1242513c631..92e3f3a92c9 100644 > >>>>>>> --- a/common/usb_onboard_hub.c > >>>>>>> +++ b/common/usb_onboard_hub.c > >>>>>>> @@ -30,6 +30,7 @@ struct onboard_hub_data { > >>>>>>> int (*init)(struct udevice *dev); > >>>>>>> }; > >>>>>>> +#if CONFIG_IS_ENABLED(DM_I2C) > >>>>>>> static int usb5744_i2c_init(struct udevice *dev) > >>>>>>> { > >>>>>>> /* > >>>>>>> @@ -109,6 +110,7 @@ static int usb5744_i2c_init(struct udevice *dev) > >>>>>>> return 0; > >>>>>>> } > >>>>>>> +#endif > >>>>>>> int usb_onboard_hub_reset(struct udevice *dev) > >>>>>>> { > >>>>>>> @@ -222,7 +224,9 @@ static const struct onboard_hub_data usb2514_data > >>>>>>> = { > >>>>>>> }; > >>>>>>> static const struct onboard_hub_data usb5744_data = { > >>>>>>> +#if CONFIG_IS_ENABLED(DM_I2C) > >>>>>>> .init = usb5744_i2c_init, > >>>>>>> +#endif > >>>>>>> .power_on_delay_us = 1000, > >>>>>>> .reset_us = 5, > >>>>>>> }; > >>>>>> > >>>>>> I think you should completely disable usb5744_data in this case > >>>>>> > >>>>> > >>>>> I would recommend to go the same route as the Linux kernel which has a > >>>>> special Kconfig option for it, c.f. USB_ONBOARD_DEV_USB5744 which adds > >>>>> the necessary dependencies. > >>>>> > >>>> On Linux kernel, it needs to parse the device node with i2c-bus. > >>>> > >>> > >>> Seems like it does in U-Boot too? c.f. usb5744_i2c_init() with > >>> dev_read_phandle_with_args with i2c-bus? > >>> > >> ok. > >>>>> We probably should be careful and figure out which boards are actually > >>>>> using the usb5744 and add this symbol to their defconfig so they don't > >>>>> regress. > >>>>> > >>>> From my initial analysis configs/xilinx_zynqmp_kria_defconfig > >>>> which use CONFIG_USB_ONBOARD_HUB > >>>> I believe using DM_I2C to guard the code is the best approach. > >>>> it should be around .init() callback to guard this to work. > >>>> > >>> > >>> I disagree. The driver clearly supports the USB5744 and the driver is > >>> compiled regardless of DM_I2C support which is required (as far as I > >>> understood, maybe that's incorrect?) for being able to use USB5744? I > >>> don't like hidden dependencies. > >>> > >> Okay, I will add a new configuration option to guard the code as done > >> in the Linux kernel. > >>> Also, I believe Neil's point is we shouldn't try to probe the USB5744 if > >>> there is no DM_I2C support, simply excluding .init() callback will > >>> probably just render this "support" of USB5744 non-functional? > >>> > >> Let me debug this more, I will update the next version. > >> I need to check if this binds correctly to the USB hub reset. > > > > I am trying to get the usb_onboard_hub to bind. > > but this driver is not getting probed in the first place, > > I am missing some configuration to get this working. > > > > Don't know your setup, but maybe have a look at > https://lore.kernel.org/u-boot/20250425-usb_onboard_hub_cypress_hx3-v1-1-3cc5a0608...@thaumatec.com/ > ? Thank you for the tip. I've incorporated all the changes as suggested in this series. However, I'm still unable to get the usb_onboard_hub_probe to execute, which is preventing me from further debugging. > > Cheers, > Quentin Thanks -Anand