board: ti: Convert cape detection to use UCLASS framework
authorKory Maincent (TI.com) <kory.maincent@bootlin.com>
Thu, 30 Oct 2025 16:45:03 +0000 (17:45 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 3 Nov 2025 16:02:39 +0000 (10:02 -0600)
Migrate TI board cape detection from legacy extension support to the
new UCLASS-based extension board framework.

Signed-off-by: Kory Maincent (TI.com) <kory.maincent@bootlin.com>
arch/arm/mach-omap2/am33xx/Kconfig
arch/arm/mach-omap2/omap5/Kconfig
board/ti/common/Kconfig
board/ti/common/Makefile
board/ti/common/cape_detect.c

index dff4f1c..77f7938 100644 (file)
@@ -15,7 +15,7 @@ config TARGET_AM335X_EVM
        select DM_GPIO
        select DM_SERIAL
        select TI_I2C_BOARD_DETECT
-       select SUPPORT_EXTENSION_SCAN
+       select SUPPORT_DM_EXTENSION_SCAN
        imply CMD_DM
        imply SPL_DM
        imply SPL_DM_SEQ_ALIAS
index 5394529..819490a 100644 (file)
@@ -38,7 +38,7 @@ config TARGET_AM57XX_EVM
        select CMD_DDR3
        select DRA7XX
        select TI_I2C_BOARD_DETECT
-       select SUPPORT_EXTENSION_SCAN
+       select SUPPORT_DM_EXTENSION_SCAN
        imply DM_THERMAL
        imply SCSI
        imply SPL_THERMAL
index 9512c5c..feb05b4 100644 (file)
@@ -20,7 +20,7 @@ config CAPE_EEPROM_BUS_NUM
        int "Cape EEPROM's I2C bus address"
        range 0 8
        default 2
-       depends on SUPPORT_EXTENSION_SCAN
+       depends on SUPPORT_DM_EXTENSION_SCAN
 
 config TI_COMMON_CMD_OPTIONS
        bool "Enable cmd options on TI platforms"
index f58935b..b42273d 100644 (file)
@@ -2,6 +2,6 @@
 # Copyright (C) 2015-2016 Texas Instruments Incorporated - https://www.ti.com/
 
 obj-${CONFIG_TI_I2C_BOARD_DETECT} += board_detect.o
-obj-${CONFIG_$(PHASE_)SUPPORT_EXTENSION_SCAN} += cape_detect.o
+obj-${CONFIG_$(PHASE_)SUPPORT_DM_EXTENSION_SCAN} += cape_detect.o
 obj-${CONFIG_OF_LIBFDT} += fdt_ops.o
 obj-${CONFIG_ARCH_K3} += k3-ddr.o
index 7786bdd..0bd4a38 100644 (file)
@@ -22,7 +22,8 @@ static void sanitize_field(char *text, size_t size)
        }
 }
 
-int extension_board_scan(struct list_head *extension_list)
+static int ti_extension_board_scan(struct udevice *dev,
+                                  struct alist *extension_list)
 {
        unsigned char addr;
        int num_capes = 0;
@@ -31,7 +32,7 @@ int extension_board_scan(struct list_head *extension_list)
                struct am335x_cape_eeprom_id eeprom_header;
                char process_cape_part_number[17] = {'0'};
                char process_cape_version[5] = {'0'};
-               struct extension *cape;
+               struct extension cape = {0};
                struct udevice *dev;
                u8 cursor = 0;
                int ret, i;
@@ -78,22 +79,23 @@ int extension_board_scan(struct list_head *extension_list)
 
                printf("BeagleBone Cape: %s (0x%x)\n", eeprom_header.board_name, addr);
 
-               cape = calloc(1, sizeof(struct extension));
-               if (!cape) {
-                       printf("Error in memory allocation\n");
-                       return num_capes;
-               }
-
-               snprintf(cape->overlay, sizeof(cape->overlay), "%s-%s.dtbo",
+               snprintf(cape.overlay, sizeof(cape.overlay), "%s-%s.dtbo",
                         process_cape_part_number, process_cape_version);
-               strlcpy(cape->name, eeprom_header.board_name,
+               strlcpy(cape.name, eeprom_header.board_name,
                        sizeof(eeprom_header.board_name));
-               strlcpy(cape->version, process_cape_version,
+               strlcpy(cape.version, process_cape_version,
                        sizeof(process_cape_version));
-               strlcpy(cape->owner, eeprom_header.manufacturer,
+               strlcpy(cape.owner, eeprom_header.manufacturer,
                        sizeof(eeprom_header.manufacturer) + 1);
-               list_add_tail(&cape->list, extension_list);
+               if (!alist_add(extension_list, cape))
+                       return -ENOMEM;
                num_capes++;
        }
        return num_capes;
 }
+
+U_BOOT_EXTENSION(cape, ti_extension_board_scan);
+
+U_BOOT_DRVINFO(cape) = {
+       .name   = "cape",
+};