File tree Expand file tree Collapse file tree 4 files changed +94
-23
lines changed Expand file tree Collapse file tree 4 files changed +94
-23
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ endif()
1414zephyr_library_sources_ifdef(CONFIG_POWEROFF poweroff.c)
1515if (CONFIG_ARM)
1616  zephyr_library_sources_ifdef(CONFIG_NRF_PLATFORM_HALTIUM soc_lrcconf.c)
17+   zephyr_library_sources_ifdef(CONFIG_PM_S2RAM_CUSTOM_MARKING pm_s2ram.S)
1718endif ()
1819
1920if ((CONFIG_SOC_SERIES_NRF54HX OR  CONFIG_SOC_SERIES_NRF92X) AND  CONFIG_CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS)
Original file line number Diff line number Diff line change 1+ / * 
2+   *  Copyright (c)  2024  Nordic Semiconductor ASA 
3+   * 
4+   *  SPDX - License - Identifier: Apache - 2 . 0 
5+   * / 
6+ 
7+  / ** 
8+   *  @file 
9+   *  @brief Nordic suspend - to - RAM code (S2RAM) 
10+   * / 
11+ 
12+ #include <zephyr/toolchain.h> 
13+ #include <zephyr/arch/ cpu .h> 
14+ #include <zephyr/arch/ common /pm_s2ram.h> 
15+ 
16+ 
17+ GTEXT(pm_s2ram_mark_set) 
18+ SECTION_FUNC(TEXT ,  pm_s2ram_mark_set) 
19+ 	/ * 
20+ 	  *  Restore the PC  and  continue 
21+ 	  * / 
22+ 	 mov   r15 ,  r1 
23+ 
24+ GTEXT(pm_s2ram_mark_check_and_clear) 
25+ SECTION_FUNC(TEXT ,  pm_s2ram_mark_check_and_clear) 
26+ 	/ * 
27+ 	  *  Set return value to  0 
28+ 	  * / 
29+ 	 mov 	r0 ,  # 0 
30+ 
31+ 	/ * 
32+ 	  *  Load check RESETREAS register 
33+ 	  * / 
34+ 	ldr	r2 ,  =CONFIG_NRF_RESETINFO_PERIPH_ADDRESS 
35+ 	ldr 	r5 ,  =CONFIG_NRF_RESETREAS_LOCAL_REG_OFFSET 
36+ 	ldr 	r3 ,   [ r5 ,  r2 ] 
37+ 	ldr 	r6 ,  =CONFIG_NRF_RESETREAS_LOCAL_UNRETAINEDWAKE_FIELD 
38+ 	 cmp 	r3 ,  r6 
39+ 
40+ 	bne	exit 
41+ 
42+ 	/ * 
43+ 	  *  Clear RESETREAS 
44+ 	  * / 
45+ 	 str 	r0 ,   [ r5 ,  r2 ] 
46+ 
47+ 	/ * 
48+ 	  *  Load RESTOREVALID register 
49+ 	  * / 
50+ 	ldr 	r5 ,  =CONFIG_NRF_RESTOREVALID_REG_OFFSET 
51+ 	ldr 	r3 ,   [ r5 ,  r2 ] 
52+ 
53+ 	/ * 
54+ 	  *  Clear RESTOREVALID 
55+ 	  * / 
56+ 	 str 	r0 ,   [ r5 ,  r2 ] 
57+ 
58+ 	/ * 
59+ 	  *  Check RESTOREVALID register 
60+ 	  * / 
61+ 	ldr 	r5 ,  =CONFIG_NRF_RESTOREVALID_PRESENT_FIELD 
62+ 	 cmp 	r3 ,  r5 
63+ 	bne	exit 
64+ 
65+ 	/ * 
66+ 	  *  Set return value to  1 
67+ 	  * / 
68+ 	 mov 	r0 ,  # 1 
69+ exit: 
70+ 	/ * 
71+ 	  *  Restore the PC  and  continue 
72+ 	  * / 
73+ 	 mov   r15 ,  r1 
Original file line number Diff line number Diff line change @@ -14,4 +14,24 @@ config NRF_REGTOOL_GENERATE_UICR
1414config NRF_REGTOOL_GENERATE_BICR
1515	default y
1616
17+ config NRF_RESETINFO_PERIPH_ADDRESS
18+ 	hex
19+ 	default 0x5201E000
20+ 
21+ config NRF_RESETREAS_LOCAL_REG_OFFSET
22+ 	hex
23+ 	default 0x4A4
24+ 
25+ config NRF_RESTOREVALID_REG_OFFSET
26+ 	hex
27+ 	default 0x4C0
28+ 
29+ config NRF_RESETREAS_LOCAL_UNRETAINEDWAKE_FIELD
30+ 	hex
31+ 	default 0x10
32+ 
33+ config NRF_RESTOREVALID_PRESENT_FIELD
34+ 	hex
35+ 	default 0x1
36+ 
1737endif # SOC_NRF54H20_CPUAPP || SOC_NRF54H20_ENGB_CPUAPP
Original file line number Diff line number Diff line change @@ -126,26 +126,3 @@ int soc_s2ram_suspend(pm_s2ram_system_off_fn_t system_off)
126126
127127	return  ret ;
128128}
129- 
130- void  pm_s2ram_mark_set (void )
131- {
132- 	/* empty */ 
133- }
134- 
135- bool  pm_s2ram_mark_check_and_clear (void )
136- {
137- 	bool  unretained_wake ;
138- 	bool  restore_valid ;
139- 	uint32_t  reset_reason  =  nrf_resetinfo_resetreas_local_get (NRF_RESETINFO );
140- 
141- 	if  (reset_reason  !=  NRF_RESETINFO_RESETREAS_LOCAL_UNRETAINED_MASK ) {
142- 		return  false;
143- 	}
144- 	unretained_wake  =  reset_reason  &  NRF_RESETINFO_RESETREAS_LOCAL_UNRETAINED_MASK ;
145- 	nrf_resetinfo_resetreas_local_set (NRF_RESETINFO , 0 );
146- 
147- 	restore_valid  =  nrf_resetinfo_restore_valid_check (NRF_RESETINFO );
148- 	nrf_resetinfo_restore_valid_set (NRF_RESETINFO , false);
149- 
150- 	return  (unretained_wake  &  restore_valid ) ? true : false;
151- }
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments