
From: Fedor Ross fedor.ross@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@ifm.com Signed-off-by: Marek Vasut marex@denx.de --- Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: "Ying-Chun Liu (PaulLiu)" paul.liu@linaro.org Cc: Andre Przywara andre.przywara@arm.com Cc: Chanho Park chanho61.park@samsung.com Cc: Elena Popa elena.popa@nxp.com Cc: Fabio Estevam festevam@gmail.com Cc: Fedor Ross fedor.ross@ifm.com Cc: Heinrich Schuchardt xypron.glpk@gmx.de Cc: Hugo Villeneuve hvilleneuve@dimonoff.com Cc: Jagan Teki jagan@amarulasolutions.com Cc: Kever Yang kever.yang@rock-chips.com Cc: Manoj Sai abbaraju.manojsai@amarulasolutions.com Cc: Michal Simek michal.simek@amd.com Cc: Neil Armstrong neil.armstrong@linaro.org Cc: Peng Fan peng.fan@nxp.com Cc: Qu Wenruo wqu@suse.com Cc: Roger Quadros rogerq@kernel.org Cc: Simon Glass sjg@chromium.org Cc: Stefan Roese sr@denx.de Cc: Stefano Babic sbabic@denx.de Cc: Tim Harvey tharvey@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)