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.
> 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. > Cheers, > Quentin Thanks -Anand