]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
fastboot: Change fastboot_buf_addr to an address
authorSimon Glass <sjg@chromium.org>
Fri, 15 Dec 2023 04:19:04 +0000 (21:19 -0700)
committerTom Rini <trini@konsulko.com>
Wed, 10 Apr 2024 23:04:25 +0000 (17:04 -0600)
Given the name of this variable, it should be an address, not a
pointer. Update this, to make it easier to use with sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Dmitrii Merkurev <dimorinny@google.com>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on vim3
cmd/fastboot.c
drivers/fastboot/fb_command.c
drivers/fastboot/fb_common.c
include/fastboot-internal.h
include/fastboot.h

index c3c19231c9889aa1e8ab9b56db4e81f31b10af43..792e83d372c37b5b8fc262aaa87104bbc205f0bf 100644 (file)
@@ -159,7 +159,7 @@ NXTARG:
                return CMD_RET_USAGE;
        }
 
-       fastboot_init((void *)buf_addr, buf_size);
+       fastboot_init(buf_addr, buf_size);
 
        if (!strcmp(argv[1], "udp"))
                return do_fastboot_udp(argc, argv, buf_addr, buf_size);
index 5fcadcdf503d98f2f2b622ea0b124b03497af556..55ac1e96979fa8a4fdd27d14e6fa2e45c987f681 100644 (file)
@@ -10,6 +10,7 @@
 #include <fastboot-internal.h>
 #include <fb_mmc.h>
 #include <fb_nand.h>
+#include <mapmem.h>
 #include <part.h>
 #include <stdlib.h>
 #include <linux/printk.h>
@@ -243,6 +244,7 @@ void fastboot_data_download(const void *fastboot_data,
 {
 #define BYTES_PER_DOT  0x20000
        u32 pre_dot_num, now_dot_num;
+       void *buf;
 
        if (fastboot_data_len == 0 ||
            (fastboot_bytes_received + fastboot_data_len) >
@@ -252,8 +254,10 @@ void fastboot_data_download(const void *fastboot_data,
                return;
        }
        /* Download data to fastboot_buf_addr */
-       memcpy(fastboot_buf_addr + fastboot_bytes_received,
+       buf = map_sysmem(fastboot_buf_addr, 0);
+       memcpy(buf + fastboot_bytes_received,
               fastboot_data, fastboot_data_len);
+       unmap_sysmem(buf);
 
        pre_dot_num = fastboot_bytes_received / BYTES_PER_DOT;
        fastboot_bytes_received += fastboot_data_len;
@@ -296,13 +300,16 @@ void fastboot_data_complete(char *response)
  */
 static void __maybe_unused flash(char *cmd_parameter, char *response)
 {
+       void *buf = map_sysmem(fastboot_buf_addr, 0);
+
        if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_MMC))
-               fastboot_mmc_flash_write(cmd_parameter, fastboot_buf_addr,
-                                        image_size, response);
+               fastboot_mmc_flash_write(cmd_parameter, buf, image_size,
+                                        response);
 
        if (IS_ENABLED(CONFIG_FASTBOOT_FLASH_NAND))
-               fastboot_nand_flash_write(cmd_parameter, fastboot_buf_addr,
-                                         image_size, response);
+               fastboot_nand_flash_write(cmd_parameter, buf, image_size,
+                                         response);
+       unmap_sysmem(buf);
 }
 
 /**
index 3576b06772998e9e66a6986eb9dc49b2681a0579..07f5946d9ed1856c23ed1a6bd08e12f3eb8b87d6 100644 (file)
@@ -20,7 +20,7 @@
 /**
  * fastboot_buf_addr - base address of the fastboot download buffer
  */
-void *fastboot_buf_addr;
+ulong fastboot_buf_addr;
 
 /**
  * fastboot_buf_size - size of the fastboot download buffer
@@ -154,7 +154,7 @@ void fastboot_boot(void)
                };
 
                snprintf(boot_addr_start, sizeof(boot_addr_start) - 1,
-                        "0x%p", fastboot_buf_addr);
+                        "%lx", fastboot_buf_addr);
                printf("Booting kernel at %s...\n\n\n", boot_addr_start);
 
                do_bootm(NULL, 0, 2, bootm_args);
@@ -214,16 +214,9 @@ void fastboot_set_progress_callback(void (*progress)(const char *msg))
        fastboot_progress_callback = progress;
 }
 
-/*
- * fastboot_init() - initialise new fastboot protocol session
- *
- * @buf_addr: Pointer to download buffer, or NULL for default
- * @buf_size: Size of download buffer, or zero for default
- */
-void fastboot_init(void *buf_addr, u32 buf_size)
+void fastboot_init(ulong buf_addr, u32 buf_size)
 {
-       fastboot_buf_addr = buf_addr ? buf_addr :
-                                      (void *)CONFIG_FASTBOOT_BUF_ADDR;
+       fastboot_buf_addr = buf_addr ? buf_addr : CONFIG_FASTBOOT_BUF_ADDR;
        fastboot_buf_size = buf_size ? buf_size : CONFIG_FASTBOOT_BUF_SIZE;
        fastboot_set_progress_callback(NULL);
 }
index bf2f2b3c8914f30a43309a35bbbe6c7e05f90ac8..d3e1c106e23fff45abe5801ce5639ed3aae96a7a 100644 (file)
@@ -6,7 +6,7 @@
 /**
  * fastboot_buf_addr - base address of the fastboot download buffer
  */
-extern void *fastboot_buf_addr;
+extern ulong fastboot_buf_addr;
 
 /**
  * fastboot_buf_size - size of the fastboot download buffer
index 296451f89d44dc25ac8ecdb8a3446681f93e14f0..744ab61cc18a56165da98c33411c062067633a68 100644 (file)
@@ -103,13 +103,13 @@ int fastboot_set_reboot_flag(enum fastboot_reboot_reason reason);
  */
 void fastboot_set_progress_callback(void (*progress)(const char *msg));
 
-/*
+/**
  * fastboot_init() - initialise new fastboot protocol session
  *
- * @buf_addr: Pointer to download buffer, or NULL for default
+ * @buf_addr: Address of download buffer, or 0 for default
  * @buf_size: Size of download buffer, or zero for default
  */
-void fastboot_init(void *buf_addr, u32 buf_size);
+void fastboot_init(ulong buf_addr, u32 buf_size);
 
 /**
  * fastboot_boot() - Execute fastboot boot command