[PATCH 06/16] board: ti: Convert cape detection to use UCLASS framework
Simon Glass
sjg at chromium.org
Mon Oct 6 22:38:23 CEST 2025
Hi Kory,
On Fri, 3 Oct 2025 at 10:34, Kory Maincent <kory.maincent at bootlin.com> wrote:
>
> Migrate TI board cape detection from legacy extension support to the
> new UCLASS-based extension board framework.
>
> Signed-off-by: Kory Maincent <kory.maincent at bootlin.com>
> ---
> arch/arm/mach-omap2/am33xx/Kconfig | 2 +-
> arch/arm/mach-omap2/omap5/Kconfig | 2 +-
> board/ti/common/cape_detect.c | 24 +++++++++++-------------
> 3 files changed, 13 insertions(+), 15 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/am33xx/Kconfig b/arch/arm/mach-omap2/am33xx/Kconfig
> index dff4f1cf202..77f7938305b 100644
> --- a/arch/arm/mach-omap2/am33xx/Kconfig
> +++ b/arch/arm/mach-omap2/am33xx/Kconfig
> @@ -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
> diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig
> index 5394529658b..819490a8cf8 100644
> --- a/arch/arm/mach-omap2/omap5/Kconfig
> +++ b/arch/arm/mach-omap2/omap5/Kconfig
> @@ -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
> diff --git a/board/ti/common/cape_detect.c b/board/ti/common/cape_detect.c
> index 7786bdda5d1..23c93964dc3 100644
> --- a/board/ti/common/cape_detect.c
> +++ b/board/ti/common/cape_detect.c
> @@ -22,7 +22,7 @@ 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 alist *extension_list)
> {
> unsigned char addr;
> int num_capes = 0;
> @@ -31,7 +31,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}, *_cape;
> struct udevice *dev;
> u8 cursor = 0;
> int ret, i;
> @@ -78,22 +78,20 @@ int extension_board_scan(struct list_head *extension_list)
I suppose that a method called scan() could be added to the uclass and
implemented by this driver.
>
> 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);
> + _cape = alist_add(extension_list, cape);
> + if (!_cape)
> + return -ENOMEM;
> num_capes++;
> }
> return num_capes;
> }
> +
> +U_BOOT_EXTENSION(cape, ti_extension_board_scan);
Can the extension information go in the devicetree, so boards can
select their scheme that way?
>
> --
> 2.43.0
>
Regards.
So,pm
More information about the U-Boot
mailing list