[PATCH v3 04/12] imx9: scmi: Add i.MX94 support to get_reset_reason()
Alice Guo (OSS)
alice.guo at oss.nxp.com
Tue Sep 23 04:14:56 CEST 2025
From: Ye Li <ye.li at nxp.com>
Update get_reset_reason() to support i.MX94 to send message to the
System Manager to retrieve the LM/system last booted/shutdown reasons.
Signed-off-by: Ye Li <ye.li at nxp.com>
Signed-off-by: Alice Guo <alice.guo at nxp.com>
Reviewed-by: Peng Fan <peng.fan at nxp.com>
---
arch/arm/mach-imx/imx9/scmi/soc.c | 39 +++++++++++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-imx/imx9/scmi/soc.c b/arch/arm/mach-imx/imx9/scmi/soc.c
index f04b9255cdb..07022c65b88 100644
--- a/arch/arm/mach-imx/imx9/scmi/soc.c
+++ b/arch/arm/mach-imx/imx9/scmi/soc.c
@@ -494,6 +494,31 @@ static char *rst_string[32] = {
"por"
};
+static char *rst_string_imx94[32] = {
+ "cm33_lockup",
+ "cm33_swreq",
+ "cm70_lockup",
+ "cm70_swreq",
+ "fccu",
+ "jtag_sw",
+ "ele",
+ "tempsense",
+ "wdog1",
+ "wdog2",
+ "wdog3",
+ "wdog4",
+ "wdog5",
+ "jtag",
+ "wdog6",
+ "wdog7",
+ "wdog8",
+ "wo_netc", "cm33s_lockup", "cm33s_swreq", "cm71_lockup", "cm71_swreq", "cm33_exc",
+ "bbm", "sw", "sm_err", "fusa_sreco", "pmic", "unused",
+ "unused", "unused",
+ "por"
+};
+
+
int get_reset_reason(bool sys, bool lm)
{
struct scmi_imx_misc_reset_reason_in in = {
@@ -512,6 +537,12 @@ int get_reset_reason(bool sys, bool lm)
int ret;
struct udevice *dev;
+ char **rst;
+
+ if (is_imx94())
+ rst = rst_string_imx94;
+ else
+ rst = rst_string;
ret = uclass_get_device_by_name(UCLASS_CLK, "protocol at 14", &dev);
if (ret)
@@ -526,7 +557,7 @@ int get_reset_reason(bool sys, bool lm)
if (out.bootflags & MISC_BOOT_FLAG_VLD) {
printf("SYS Boot reason: %s, origin: %ld, errid: %ld\n",
- rst_string[out.bootflags & MISC_BOOT_FLAG_REASON],
+ rst[out.bootflags & MISC_BOOT_FLAG_REASON],
out.bootflags & MISC_BOOT_FLAG_ORG_VLD ?
FIELD_GET(MISC_BOOT_FLAG_ORIGIN, out.bootflags) : -1,
out.bootflags & MISC_BOOT_FLAG_ERR_VLD ?
@@ -535,7 +566,7 @@ int get_reset_reason(bool sys, bool lm)
}
if (out.shutdownflags & MISC_SHUTDOWN_FLAG_VLD) {
printf("SYS shutdown reason: %s, origin: %ld, errid: %ld\n",
- rst_string[out.bootflags & MISC_SHUTDOWN_FLAG_REASON],
+ rst[out.bootflags & MISC_SHUTDOWN_FLAG_REASON],
out.bootflags & MISC_SHUTDOWN_FLAG_ORG_VLD ?
FIELD_GET(MISC_SHUTDOWN_FLAG_ORIGIN, out.bootflags) : -1,
out.bootflags & MISC_SHUTDOWN_FLAG_ERR_VLD ?
@@ -556,7 +587,7 @@ int get_reset_reason(bool sys, bool lm)
if (out.bootflags & MISC_BOOT_FLAG_VLD) {
printf("LM Boot reason: %s, origin: %ld, errid: %ld\n",
- rst_string[out.bootflags & MISC_BOOT_FLAG_REASON],
+ rst[out.bootflags & MISC_BOOT_FLAG_REASON],
out.bootflags & MISC_BOOT_FLAG_ORG_VLD ?
FIELD_GET(MISC_BOOT_FLAG_ORIGIN, out.bootflags) : -1,
out.bootflags & MISC_BOOT_FLAG_ERR_VLD ?
@@ -566,7 +597,7 @@ int get_reset_reason(bool sys, bool lm)
if (out.shutdownflags & MISC_SHUTDOWN_FLAG_VLD) {
printf("LM shutdown reason: %s, origin: %ld, errid: %ld\n",
- rst_string[out.bootflags & MISC_SHUTDOWN_FLAG_REASON],
+ rst[out.bootflags & MISC_SHUTDOWN_FLAG_REASON],
out.bootflags & MISC_SHUTDOWN_FLAG_ORG_VLD ?
FIELD_GET(MISC_SHUTDOWN_FLAG_ORIGIN, out.bootflags) : -1,
out.bootflags & MISC_SHUTDOWN_FLAG_ERR_VLD ?
--
2.43.0
More information about the U-Boot
mailing list