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.amoon@...>
---
? 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.
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.
Cheers,
Quentin