[PATCH 16/25] bootm: Allow building when cleanup functions are missing
Simon Glass
sjg at chromium.org
Sun Sep 24 22:39:34 CEST 2023
There are two cleanup functions needed during boot which depend on
CMD_BOOTM: bootm_disable_interrupts() and board_quiesce_devices()
Provide static inline versions of these for when commands are not
enabled.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
arch/arm/lib/bootm.c | 2 ++
boot/bootm.c | 10 ++++------
include/bootm.h | 15 +++++++++++++--
3 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index c56285738a26..db8df57cb56e 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -42,9 +42,11 @@ DECLARE_GLOBAL_DATA_PTR;
static struct tag *params;
+#ifdef CONFIG_CMD_BOOTM
__weak void board_quiesce_devices(void)
{
}
+#endif
/**
* announce_and_cleanup() - Print message and prepare for kernel boot
diff --git a/boot/bootm.c b/boot/bootm.c
index b1c3afe0a3ad..ee8c79a650c2 100644
--- a/boot/bootm.c
+++ b/boot/bootm.c
@@ -47,9 +47,11 @@ static const void *boot_get_kernel(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[], struct bootm_headers *images,
ulong *os_data, ulong *os_len);
+#ifdef CONFIG_CMD_BOOTM
__weak void board_quiesce_devices(void)
{
}
+#endif
#ifdef CONFIG_LMB
static void boot_start_lmb(struct bootm_headers *images)
@@ -470,12 +472,7 @@ static int bootm_load_os(struct bootm_headers *images, int boot_progress)
return 0;
}
-/**
- * bootm_disable_interrupts() - Disable interrupts in preparation for load/boot
- *
- * Return: interrupt flag (0 if interrupts were disabled, non-zero if they were
- * enabled)
- */
+#ifdef CONFIG_CMD_BOOTM
ulong bootm_disable_interrupts(void)
{
ulong iflag;
@@ -505,6 +502,7 @@ ulong bootm_disable_interrupts(void)
#endif
return iflag;
}
+#endif
#define CONSOLE_ARG "console="
#define NULL_CONSOLE (CONSOLE_ARG "ttynull")
diff --git a/include/bootm.h b/include/bootm.h
index c3c7336207b1..17c740449efd 100644
--- a/include/bootm.h
+++ b/include/bootm.h
@@ -50,8 +50,6 @@ int bootm_host_load_images(const void *fit, int cfg_noffset);
int boot_selected_os(int argc, char *const argv[], int state,
struct bootm_headers *images, boot_os_fn *boot_fn);
-ulong bootm_disable_interrupts(void);
-
/* This is a special function used by booti/bootz */
int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
ulong size);
@@ -62,6 +60,15 @@ int do_bootm_states(struct cmd_tbl *cmdtp, int flag, int argc,
void arch_preboot_os(void);
+#ifdef CONFIG_CMD_BOOTM
+/**
+ * bootm_disable_interrupts() - Disable interrupts, stop Ethernet and USB
+ *
+ * Return: interrupt flag (0 if interrupts were disabled, non-zero if they were
+ * enabled)
+ */
+ulong bootm_disable_interrupts(void);
+
/*
* boards should define this to disable devices when EFI exits from boot
* services.
@@ -69,6 +76,10 @@ void arch_preboot_os(void);
* TODO(sjg at chromium.org>): Update this to use driver model's device_remove().
*/
void board_quiesce_devices(void);
+#else
+static inline ulong bootm_disable_interrupts(void) { return 0; }
+static inline void board_quiesce_devices(void) {}
+#endif
/**
* switch_to_non_secure_mode() - switch to non-secure mode
--
2.42.0.515.g380fc7ccd1-goog
More information about the U-Boot
mailing list