}
}
-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;
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;
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",
+};