]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: afs: Set the filesize env. var. on load
authorRobert Catherall <robert.catherall@arm.com>
Thu, 23 Nov 2023 14:16:01 +0000 (14:16 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 20 Dec 2023 15:46:54 +0000 (10:46 -0500)
The `afs load` command copies data to RAM. Set the filesize
environment variable to record how much data was 'loaded'

Signed-off-by: Robert Catherall <robert.catherall@arm.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Andre Przywara <andre.przywara@arm.com>
cmd/armflash.c

index d1466f73aa41defe0052c6bf2c27389525b82529..fdaea5ad811d2cb8283cd75559e352d5debec9fa 100644 (file)
@@ -180,6 +180,7 @@ static int load_image(const char * const name, const ulong address)
 {
        struct afs_image *afi = NULL;
        int i;
+       loff_t len_read = 0;
 
        parse_flash();
        for (i = 0; i < num_afs_images; i++) {
@@ -197,6 +198,7 @@ static int load_image(const char * const name, const ulong address)
 
        for (i = 0; i < afi->region_count; i++) {
                ulong from, to;
+               u32 size;
 
                from = afi->flash_mem_start + afi->regions[i].offset;
                if (address) {
@@ -208,14 +210,20 @@ static int load_image(const char * const name, const ulong address)
                        return CMD_RET_FAILURE;
                }
 
-               memcpy((void *)to, (void *)from, afi->regions[i].size);
+               size = afi->regions[i].size;
+               memcpy((void *)to, (void *)from, size);
 
                printf("loaded region %d from %08lX to %08lX, %08X bytes\n",
                       i,
                       from,
                       to,
-                      afi->regions[i].size);
+                      size);
+
+               len_read += size;
        }
+
+       env_set_hex("filesize", len_read);
+
        return CMD_RET_SUCCESS;
 }