diff --git a/system/nxinit/init.c b/system/nxinit/init.c index 95f95b1b2..1348c8c9d 100644 --- a/system/nxinit/init.c +++ b/system/nxinit/init.c @@ -27,7 +27,9 @@ #include #include +#include #include +#include #include #include #include @@ -118,12 +120,10 @@ static int init_boot_reason(FAR struct action_manager_s *am) [BOARDIOC_RESETCAUSE_SYS_CHIPPOR] = "cold", [BOARDIOC_RESETCAUSE_SYS_RWDT] = "watchdog", [BOARDIOC_RESETCAUSE_SYS_BOR] = "undervoltage", - [BOARDIOC_RESETCAUSE_CORE_SOFT] = "warm", [BOARDIOC_RESETCAUSE_CORE_DPSP] = "warm", [BOARDIOC_RESETCAUSE_CORE_MWDT] = "watchdog", [BOARDIOC_RESETCAUSE_CORE_RWDT] = "watchdog", [BOARDIOC_RESETCAUSE_CPU_MWDT] = "watchdog", - [BOARDIOC_RESETCAUSE_CPU_SOFT] = "warm", [BOARDIOC_RESETCAUSE_CPU_RWDT] = "watchdog", [BOARDIOC_RESETCAUSE_PIN] = "powerkey", [BOARDIOC_RESETCAUSE_LOWPOWER] = "lowpower", @@ -142,7 +142,9 @@ static int init_boot_reason(FAR struct action_manager_s *am) [BOARDIOC_SOFTRESETCAUSE_THERMAL] = "thermal", }; + char buf[CONFIG_SYSTEM_NXINIT_RC_LINE_MAX]; struct boardioc_reset_cause_s reset; + FAR const char *value; int ret; memset(&reset, 0, sizeof(reset)); @@ -163,9 +165,17 @@ static int init_boot_reason(FAR struct action_manager_s *am) reset.flag = nitems(resetflag) - 1; } - return init_property_set(am->prop, "sys.boot.reason", - reset.cause != BOARDIOC_RESETCAUSE_CPU_SOFT ? - resetcause[reset.cause] : resetflag[reset.flag]); + if (resetcause[reset.cause]) + { + sprintf(buf, "%s,%" PRIu32 "", resetcause[reset.cause], reset.flag); + value = buf; + } + else + { + value = resetflag[reset.flag]; + } + + return init_property_set(am->prop, "sys.boot.reason", value); } #else # define init_boot_reason(am) (0)