@@ -52,16 +52,60 @@ const size_t kMaxHeapSize = CONFIG_SRAM_BASE_ADDRESS + KB(CONFIG_SRAM_SIZE) - PO
5252
5353#endif 
5454
55+ #ifdef  CONFIG_SOC_SERIES_NRF54HX
56+ #include  < hal/nrf_resetinfo.h> 
57+ #endif 
58+ 
59+ #include  < platform/SaveBootReasonDFUSuit.h> 
60+ 
5561namespace  chip  {
5662namespace  DeviceLayer  {
5763
5864namespace  {
5965
6066BootReasonType DetermineBootReason ()
6167{
62- #ifdef  CONFIG_HWINFO
68+ 
69+ #if  defined(CONFIG_SOC_SERIES_NRF54HX) || defined(CONFIG_HWINFO)
6370    uint32_t  reason;
71+ #endif 
72+     ChipLogDetail (DeviceLayer, " Software Boot reason %d"  , BootReason);
73+ #ifdef  CONFIG_SOC_SERIES_NRF54HX
74+     reason = nrf_resetinfo_resetreas_global_get (NRF_RESETINFO);
75+ 
76+     if  (reason == RESETINFO_RESETREAS_GLOBAL_ResetValue)
77+     {
78+         return  BootReasonType::kSoftwareReset ;
79+     }
80+ 
81+     if  (reason & RESETINFO_RESETREAS_GLOBAL_RESETPORONLY_Msk)
82+     {
83+         return  BootReasonType::kBrownOutReset ;
84+     }
85+ 
86+     if  (reason & RESETINFO_RESETREAS_GLOBAL_DOG_Msk)
87+     {
88+         return  BootReasonType::kHardwareWatchdogReset ;
89+     }
90+ 
91+     if  ((reason & (RESETINFO_RESETREAS_GLOBAL_RESETPIN_Msk | RESETINFO_RESETREAS_GLOBAL_RESETPOR_Msk)) ==
92+         (RESETINFO_RESETREAS_GLOBAL_RESETPIN_Msk | RESETINFO_RESETREAS_GLOBAL_RESETPOR_Msk))
93+     {
94+         return  BootReasonType::kPowerOnReboot ;
95+     }
6496
97+     if  ((reason & (RESETINFO_RESETREAS_GLOBAL_RESETPOR_Msk | RESETINFO_RESETREAS_GLOBAL_SECSREQ_Msk)) ==
98+         (RESETINFO_RESETREAS_GLOBAL_RESETPOR_Msk | RESETINFO_RESETREAS_GLOBAL_SECSREQ_Msk))
99+     {
100+         if  (BootReason == 5 )
101+         {
102+             BootReason = 0 ;
103+             return  BootReasonType::kSoftwareUpdateCompleted ;
104+         }
105+     }
106+ #endif 
107+ 
108+ #ifdef  CONFIG_HWINFO
65109    if  (hwinfo_get_reset_cause (&reason) != 0 )
66110    {
67111        return  BootReasonType::kUnspecified ;
0 commit comments