]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: fwu: make changes for supporting FWU metadata version 2
authorSughosh Ganu <sughosh.ganu@linaro.org>
Fri, 22 Mar 2024 10:57:27 +0000 (16:27 +0530)
committerTom Rini <trini@konsulko.com>
Fri, 24 May 2024 19:40:04 +0000 (13:40 -0600)
Add support for displaying data specific to FWU metadata version
2. Because the size of the v2 metadata structure is read from the
structure itself, allocate memory for the metadata structure by first
getting the size of the structure.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Tested-by: Michal Simek <michal.simek@amd.com>
cmd/fwu_mdata.c

index 5ecda455df6e1b3f852850d5ce4a36b85f810e26..3c8be576ac7ac509959cfe9c3df15549f329413a 100644 (file)
 
 #include <linux/types.h>
 
-static void print_mdata(struct fwu_mdata *mdata)
+static void print_mdata(struct fwu_data *data)
 {
        int i, j;
        struct fwu_image_entry *img_entry;
        struct fwu_image_bank_info *img_info;
 
        printf("\tFWU Metadata\n");
-       printf("crc32: %#x\n", mdata->crc32);
-       printf("version: %#x\n", mdata->version);
-       printf("active_index: %#x\n", mdata->active_index);
-       printf("previous_active_index: %#x\n", mdata->previous_active_index);
+       printf("crc32: %#x\n", data->crc32);
+       printf("version: %#x\n", data->version);
+       printf("active_index: %#x\n", data->active_index);
+       printf("previous_active_index: %#x\n", data->previous_active_index);
+
+       if (data->version == 2) {
+               for (i = 0; i < 4; i++)
+                       printf("bank_state[%d]: %#x\n",
+                              i, data->bank_state[i]);
+       }
 
        printf("\tImage Info\n");
        for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) {
-               img_entry = &mdata->img_entry[i];
+               img_entry = &data->fwu_images[i];
                printf("\nImage Type Guid: %pUL\n",
-                      &img_entry->image_type_uuid);
-               printf("Location Guid: %pUL\n", &img_entry->location_uuid);
+                      &img_entry->image_type_guid);
+               printf("Location Guid: %pUL\n", &img_entry->location_guid);
                for (j = 0; j < CONFIG_FWU_NUM_BANKS; j++) {
                        img_info = &img_entry->img_bank_info[j];
-                       printf("Image Guid:  %pUL\n", &img_info->image_uuid);
+                       printf("Image Guid:  %pUL\n", &img_info->image_guid);
                        printf("Image Acceptance: %s\n",
                               img_info->accepted == 0x1 ? "yes" : "no");
                }
@@ -43,20 +49,11 @@ static void print_mdata(struct fwu_mdata *mdata)
 int do_fwu_mdata_read(struct cmd_tbl *cmdtp, int flag,
                     int argc, char * const argv[])
 {
-       int ret = CMD_RET_SUCCESS, res;
-       struct fwu_mdata mdata;
-
-       res = fwu_get_mdata(&mdata);
-       if (res < 0) {
-               log_err("Unable to get valid FWU metadata\n");
-               ret = CMD_RET_FAILURE;
-               goto out;
-       }
+       struct fwu_data *data = fwu_get_data();
 
-       print_mdata(&mdata);
+       print_mdata(data);
 
-out:
-       return ret;
+       return CMD_RET_SUCCESS;
 }
 
 U_BOOT_CMD(