[PATCH v2 4/4] ARM: imx: Add support for detecting primary/secondary bmode on MX8M

Marek Vasut marex at denx.de
Mon Oct 16 18:16:15 CEST 2023


From: Fedor Ross <fedor.ross at ifm.com>

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 at ifm.com>
Signed-off-by: Marek Vasut <marex at denx.de>
---
Cc: "NXP i.MX U-Boot Team" <uboot-imx at nxp.com>
Cc: "Ying-Chun Liu (PaulLiu)" <paul.liu at linaro.org>
Cc: Andre Przywara <andre.przywara at arm.com>
Cc: Chanho Park <chanho61.park at samsung.com>
Cc: Elena Popa <elena.popa at nxp.com>
Cc: Fabio Estevam <festevam at gmail.com>
Cc: Fedor Ross <fedor.ross at ifm.com>
Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
Cc: Hugo Villeneuve <hvilleneuve at dimonoff.com>
Cc: Jagan Teki <jagan at amarulasolutions.com>
Cc: Kever Yang <kever.yang at rock-chips.com>
Cc: Manoj Sai <abbaraju.manojsai at amarulasolutions.com>
Cc: Michal Simek <michal.simek at amd.com>
Cc: Neil Armstrong <neil.armstrong at linaro.org>
Cc: Peng Fan <peng.fan at nxp.com>
Cc: Qu Wenruo <wqu at suse.com>
Cc: Roger Quadros <rogerq at kernel.org>
Cc: Simon Glass <sjg at chromium.org>
Cc: Stefan Roese <sr at denx.de>
Cc: Stefano Babic <sbabic at denx.de>
Cc: Tim Harvey <tharvey at gateworks.com>
---
V2: Mask out boot_mode_apply() on MX8M and newer,
    since this functionality is not available.
---
 arch/arm/mach-imx/Kconfig     | 2 +-
 arch/arm/mach-imx/cmd_bmode.c | 4 ++++
 arch/arm/mach-imx/imx8m/soc.c | 5 +++++
 3 files changed, 10 insertions(+), 1 deletion(-)

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 d33ac06cab4..556611a04e7 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)
-- 
2.42.0



More information about the U-Boot mailing list