diff options
| author | Ye Li <[email protected]> | 2025-09-23 10:14:56 +0800 |
|---|---|---|
| committer | Fabio Estevam <[email protected]> | 2025-09-26 09:51:21 -0300 |
| commit | 1588c243b972eee7086cfbb98e04fc680f7fae13 (patch) | |
| tree | 91b117d7634b8b96a473482dafd4f12e561f4dd4 | |
| parent | 998c6cc450e61152b6d0e800989d2d19358e25c2 (diff) | |
imx9: scmi: Add i.MX94 support to get_reset_reason()
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 <[email protected]>
Signed-off-by: Alice Guo <[email protected]>
Reviewed-by: Peng Fan <[email protected]>
| -rw-r--r-- | arch/arm/mach-imx/imx9/scmi/soc.c | 39 |
1 files 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@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 ? |
