summaryrefslogtreecommitdiff
path: root/drivers/fastboot/fb_common.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2024-04-18 08:29:35 -0600
committerTom Rini <trini@konsulko.com>2024-04-18 08:29:35 -0600
commitcdd20e3f66fe910da0545d3615decf511519b4a6 (patch)
tree9162980e2293b2a2405060f44529fe7a25cd0e1e /drivers/fastboot/fb_common.c
parent3434b88d2c2fdad3cc947f9e9b03dabfdd3feb5c (diff)
Revert "Merge patch series "pxe: Allow extlinux booting without CMDLINE enabled""
As reported by Jonas Karlman this series breaks booting on some AArch64 platforms with common use cases. For now the best path forward is to revert the series. This reverts commit 777c28460947371ada40868dc994dfe8537d7115, reversing changes made to ab3453e7b12daef47b9e91da2a2a3d48615dc6fc. Link: https://lore.kernel.org/u-boot/50dfa3d6-a1ca-4492-a3fc-8d8c56b40b43@kwiboo.se/ Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'drivers/fastboot/fb_common.c')
-rw-r--r--drivers/fastboot/fb_common.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/drivers/fastboot/fb_common.c b/drivers/fastboot/fb_common.c
index 595954542a6..3576b067729 100644
--- a/drivers/fastboot/fb_common.c
+++ b/drivers/fastboot/fb_common.c
@@ -11,7 +11,6 @@
*/
#include <bcb.h>
-#include <bootm.h>
#include <common.h>
#include <command.h>
#include <env.h>
@@ -21,7 +20,7 @@
/**
* fastboot_buf_addr - base address of the fastboot download buffer
*/
-ulong fastboot_buf_addr;
+void *fastboot_buf_addr;
/**
* fastboot_buf_size - size of the fastboot download buffer
@@ -143,19 +142,22 @@ void (*fastboot_get_progress_callback(void))(const char *)
*/
void fastboot_boot(void)
{
- char *s = NULL;
+ char *s;
- if (IS_ENABLED(CONFIG_CMDLINE)) {
- s = env_get("fastboot_bootcmd");
- if (s)
- run_command(s, CMD_FLAG_ENV);
- }
+ s = env_get("fastboot_bootcmd");
+ if (s) {
+ run_command(s, CMD_FLAG_ENV);
+ } else if (IS_ENABLED(CONFIG_CMD_BOOTM)) {
+ static char boot_addr_start[20];
+ static char *const bootm_args[] = {
+ "bootm", boot_addr_start, NULL
+ };
- if (!s && IS_ENABLED(CONFIG_BOOTM)) {
- int ret;
+ snprintf(boot_addr_start, sizeof(boot_addr_start) - 1,
+ "0x%p", fastboot_buf_addr);
+ printf("Booting kernel at %s...\n\n\n", boot_addr_start);
- printf("Booting kernel at %lx...\n\n\n", fastboot_buf_addr);
- ret = bootm_boot_start(fastboot_buf_addr, NULL);
+ do_bootm(NULL, 0, 2, bootm_args);
/*
* This only happens if image is somehow faulty so we start
@@ -212,9 +214,16 @@ void fastboot_set_progress_callback(void (*progress)(const char *msg))
fastboot_progress_callback = progress;
}
-void fastboot_init(ulong buf_addr, u32 buf_size)
+/*
+ * 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)
{
- fastboot_buf_addr = buf_addr ? buf_addr : CONFIG_FASTBOOT_BUF_ADDR;
+ fastboot_buf_addr = buf_addr ? buf_addr :
+ (void *)CONFIG_FASTBOOT_BUF_ADDR;
fastboot_buf_size = buf_size ? buf_size : CONFIG_FASTBOOT_BUF_SIZE;
fastboot_set_progress_callback(NULL);
}