]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
imx9: scmi: Add i.MX94 support to get_reset_reason()
authorYe Li <ye.li@nxp.com>
Tue, 23 Sep 2025 02:14:56 +0000 (10:14 +0800)
committerFabio Estevam <festevam@gmail.com>
Fri, 26 Sep 2025 12:51:21 +0000 (09:51 -0300)
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@nxp.com>
Signed-off-by: Alice Guo <alice.guo@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
arch/arm/mach-imx/imx9/scmi/soc.c

index f04b9255cdb52b4ef8fcca4d4cb1cc219e6d78bd..07022c65b889f349263cf05e9370a8ca3a1d196f 100644 (file)
@@ -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 ?