summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedor Ross <fedor.ross@ifm.com>2023-10-16 18:16:15 +0200
committerStefano Babic <sbabic@denx.de>2023-10-17 23:55:10 +0200
commita41c9ddb30913fc581c0395916d127788936763c (patch)
tree3aaf4bd0fe894c647a983a1fc2042b2902205be2
parent71c2faeca74cfc1ad7e14c15105fe7c54c89aa96 (diff)
ARM: imx: Add support for detecting primary/secondary bmode on MX8M
Implement the 'getprisec' subcommand of 'bmode' command for i.MX8M by reading out the ROM log events. This event is set by the BootROM if it switched to the secondary copy due to primary copy being corrupted. Signed-off-by: Fedor Ross <fedor.ross@ifm.com> Signed-off-by: Marek Vasut <marex@denx.de>
-rw-r--r--arch/arm/mach-imx/Kconfig2
-rw-r--r--arch/arm/mach-imx/cmd_bmode.c4
-rw-r--r--arch/arm/mach-imx/imx8m/soc.c5
3 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 266bb20df9d..44e1e1628ba 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -71,7 +71,7 @@ config CSF_SIZE
config CMD_BMODE
bool "Support the 'bmode' command"
default y
- depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
+ depends on ARCH_IMX8M || ARCH_MX7 || ARCH_MX6 || ARCH_MX5
help
This enables the 'bmode' (bootmode) command for forcing
a boot from specific media.
diff --git a/arch/arm/mach-imx/cmd_bmode.c b/arch/arm/mach-imx/cmd_bmode.c
index cb317499d54..5b2f4686230 100644
--- a/arch/arm/mach-imx/cmd_bmode.c
+++ b/arch/arm/mach-imx/cmd_bmode.c
@@ -83,7 +83,11 @@ static int do_boot_mode(struct cmd_tbl *cmdtp, int flag, int argc,
reset_requested = 0;
}
+/* No longer applicable to i.MX8M */
+#if IS_ENABLED(CONFIG_MX53) || IS_ENABLED(CONFIG_MX6) || IS_ENABLED(CONFIG_MX7)
boot_mode_apply(p->cfg_val);
+#endif
+
if (reset_requested && p->cfg_val)
do_reset(NULL, 0, 0, NULL);
return 0;
diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
index ce67b439e87..39802d6a796 100644
--- a/arch/arm/mach-imx/imx8m/soc.c
+++ b/arch/arm/mach-imx/imx8m/soc.c
@@ -727,6 +727,11 @@ int spl_mmc_emmc_boot_partition(struct mmc *mmc)
return part;
}
+
+int boot_mode_getprisec(void)
+{
+ return !!imx8m_detect_secondary_image_boot();
+}
#endif
#if defined(CONFIG_IMX8MN) || defined(CONFIG_IMX8MP)