From: Ye Li <[email protected]>

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]>
---
 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@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

Reply via email to