gr55xx_pwr.h
Go to the documentation of this file.
1 /**
2 *****************************************************************************************
3 *
4 * @file gr55xx_pwr.h
5 *
6 * @brief GR55XX Platform Power Manager Module API
7 *
8 *****************************************************************************************
9 * @attention
10 #####Copyright (c) 2019 GOODIX
11 All rights reserved.
12
13 Redistribution and use in source and binary forms, with or without
14 modification, are permitted provided that the following conditions are met:
15 * Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
17 * Redistributions in binary form must reproduce the above copyright
18 notice, this list of conditions and the following disclaimer in the
19 documentation and/or other materials provided with the distribution.
20 * Neither the name of GOODIX nor the names of its contributors may be used
21 to endorse or promote products derived from this software without
22 specific prior written permission.
23
24 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
28 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 POSSIBILITY OF SUCH DAMAGE.
35 *****************************************************************************************
36 */
37
38 /**
39 * @addtogroup SYSTEM
40 * @{
41 */
42
43 /**
44 * @addtogroup PWR Power Manager
45 * @{
46 * @brief Definitions and prototypes for the Power Manager interface.
47 */
48
49
50 #ifndef __GR55XX_PWR_H_
51 #define __GR55XX_PWR_H_
52
53 #include <stdint.h>
54 #include <stdbool.h>
55 #include <stdio.h>
56
57 #include "system_gr55xx.h"
58
59 /**
60 * @defgroup GR55XX_PWR_DEFINE Defines
61 * @{
62 */
63
64 /**@brief PMU error code. */
65 #define PMR_MGMT_SUCCESS 0x0
66 #define PMR_MGMT_FAIL 0xFF
67 #define PWR_MGMT_BB_CHECK_FAIL 0xFE
68 #define PWR_MGMT_MODE_CHECK_FAIL 0xFD
69
70 /** @} */
71
72 /**
73 * @addtogroup GR55XX_PWR_STRUCTURES Structures
74 * @{
75 */
76 /**
77 * @brief power manager setting parameter.
78 * Use pwr_mgmt_var_set to transfer the parameters in the structure to PMU,
79 * and then the pwr_mgmt_mode_set function will use the new parameters for
80 * power management.
81 * Note that this is an advanced API, the wrong setting of parameters may
82 * lead to abnormal power management, so please use it carefully.
83 */
84 typedef struct
85 {
86 uint32_t pwr_mgmt_app_timer_thrd; /**< App timer threshold. */
87 uint32_t pwr_mgmt_ble_core_thrd; /**< BLE timer threshold. */
88 uint32_t pwr_mgmt_rtc_timer_thrd; /**< RTC timer threshold. */
89 uint32_t pwr_mgmt_wdt_timer_thrd; /**< AON WDT threshold. */
90 } pwr_mgmt_var_box_t;
91
92 /** @} */
93
94 /**
95 * @addtogroup GR55XX_PWR_ENUM Enumerations
96 * @{
97 */
98 /**@brief power manager boot type. */
99 typedef enum
100 {
101 COLD_BOOT = 0, /**< Cold boot state. */
102 WARM_BOOT, /**< Warm boot state. */
103 } boot_mode_t;
104
105 /**@brief power manager model. */
106 typedef enum
107 {
108 PMR_MGMT_ACTIVE_MODE = 0x0, /**< Full speed state. */
109 PMR_MGMT_IDLE_MODE, /**< Idle state. */
110 PMR_MGMT_SLEEP_MODE, /**< Deep sleep state. */
111 } pwr_mgmt_mode_t;
112
113 /**@brief power manager device work state. */
114 typedef enum
115 {
116 DEVICE_BUSY = 0x0, /**< Device busy state. */
117 DEVICE_IDLE, /**< Device idle state. */
118 } pwr_mgmt_dev_state_t;
119
120 /**@brief power manager app timer work state. */
121 typedef enum
122 {
123 EVENT_APP_TIMER_START = 0, /**< App-timer start state. */
124 EVENT_APP_TIMER_STOP, /**< App-timer stop state. */
125 } notify_timer_event_t;
126
127 /**@brief PMU Tracking*/
128 enum
129 {
130 TRC_PWR_WFE_MODE = 0, /**< WFE mode. */
131 TRC_PWR_DSLEEP_MODE, /**< Deep sleep mode. */
132 TRC_PWR_ACTIVE_MODE, /**< Active mode. */
133 TRC_PWR_BLE_RET_DSLEEP, /**< BLE return deep sleep. */
134 TRC_PWR_APP_TIMER_REFUSE, /**< App timer refuse. */
135 TRC_PWR_APP_TIMER_PASS, /**< App timer pass. */
136 TRC_PWR_BLE_TIMER_REFUSE, /**< BLE timer refuse. */
137 TRC_PWR_BLE_TIMER_PASS, /**< BLE timer pass. */
138 TRC_PWR_RTC_TIMER_REFUSE, /**< RTC timer refuse. */
139 TRC_PWR_RTC_TIMER_PASS, /**< RTC timer pass. */
140 TRC_PWR_RTC1_TIMER_REFUSE, /**< RTC timer refuse. */
141 TRC_PWR_RTC1_TIMER_PASS, /**< RTC timer pass. */
142 TRC_PWR_WDT_TIMER_REFUSE, /**< AON WDT timer refuse. */
143 TRC_PWR_WDT_TIMER_PASS, /**< AON WDT timer pass. */
144 };
145
146 /** @} */
147
148 /**
149 * @addtogroup GR55XX_PWR_STRUCTURES Structures
150 * @{
151 */
152 /**@brief parameter configuration table. */
153 typedef struct
154 {
155 uint16_t pwr_dur; /**< Duration. */
156 uint16_t pwr_ext; /**< External wake-up. */
157 uint16_t pwr_osc; /**< OSC. */
158 uint8_t pwr_delay_hslot; /**< Delay half slot. */
159 uint16_t pwr_delay_hus; /**< Delay half us. */
160 uint16_t pwr_push_hus; /**< Push half us. */
161 uint32_t pwr_timer_ths; /**< APP timer threshold. */
162 uint32_t pwr_ble_ths; /**< BLE timer threshold. */
163 } pwr_table_t;
164
165 /** @} */
166
167 /**
168 * @addtogroup GR55XX_PWR_TYPEDEFS Type definitions
169 * @{
170 */
171 /**@brief Trace function type. */
172 typedef void (*trace_func_t)(uint8_t);
173
174 /**@brief Peripheral function type. */
175 typedef void (*periph_func_t)(void);
176
177 /**@brief Before sleep function type. */
178 typedef void (*pwr_before_sleep_func_t)(void);
179
180 /**@brief Device check function type. */
181 typedef pwr_mgmt_dev_state_t (*pwr_dev_check_func_t)(void);
182
183 /**@brief mem check process type. */
184 typedef void (*mem_check_proc_t)(void);
185
186 /**@brief SRPG before function type. */
187 typedef uint8_t (*srpg_before_func_t)(void);
188
189 /** @} */
190
191 /**
192 * @addtogroup GR55XX_PWR_VARIABLE Variable
193 * @{
194 */
195 /**@brief pwr table. */
196 extern pwr_table_t pwr_table[];
197
198 /** @} */
199
200 /** @addtogroup GR55XX_PWR_FUNCTIONS Functions
201 * @{ */
202 /**
203 *****************************************************************************************
204 * @brief This function allows ARM to enter deep sleep mode, but users should not use this
205 * function directly.
206 * Note that this function is only available in environments where non-RTOS is used,
207 * and that users can only execute it while in main.c.
208 * @returns Power Management mode
209 *****************************************************************************************
210 */
211 pwr_mgmt_mode_t pwr_mgmt_shutdown(void);
212
213 /**
214 ****************************************************************************************
215 * @brief Get the current boot mode.
216 * @returns Boot mode.
217 ****************************************************************************************
218 */
219 boot_mode_t pwr_mgmt_get_wakeup_flag(void);
220
221 /**
222 ****************************************************************************************
223 * @brief Mark the mode of next boot, cold boot or warm boot.
224 * @param[in] boot_mode : cold boot or warm boot.
225 ****************************************************************************************
226 */
227 void pwr_mgmt_set_wakeup_flag(boot_mode_t boot_mode);
228
229 /**
230 ****************************************************************************************
231 * @brief Set the specified sleep mode. When the setting is completed, the system will
232 * automatically enter the specified sleep mode through the strategy.
233 * @param[in] pm_mode : sleep level
234 ****************************************************************************************
235 */
236 void pwr_mgmt_mode_set(pwr_mgmt_mode_t pm_mode);
237
238 /**
239 ****************************************************************************************
240 * @brief Get the specified sleep mode.
241 * @retval Power management mode
242 ****************************************************************************************
243 */
244 pwr_mgmt_mode_t pwr_mgmt_mode_get(void);
245
246 /**
247 ****************************************************************************************
248 * @brief Get the power state of baseband.
249 * @retval Power management mode
250 ****************************************************************************************
251 */
252 pwr_mgmt_mode_t pwr_mgmt_baseband_state_get(void);
253
254 /**
255 ****************************************************************************************
256 * @brief Get the state of extenal timer.
257 * @retval Power management mode
258 ****************************************************************************************
259 */
260 pwr_mgmt_mode_t pwr_mgmt_check_ext_timer(void);
261
262
263
264 /**
265 ****************************************************************************************
266 * @brief Sleep Policy Scheduling Function.
267 * Note that this function is only available in environments where non-RTOS is used,
268 and that users can only execute it while in main.c.
269 ****************************************************************************************
270 */
271 void pwr_mgmt_schedule(void);
272
273 /**
274 ****************************************************************************************
275 * @brief Wake the BLE core via an external request.
276 ****************************************************************************************
277 */
278 void pwr_mgmt_ble_wakeup(void);
279
280
281 /**
282 ****************************************************************************************
283 * @brief Check whether there are ble events in the queue, and if so, handle them immediately.
284 ****************************************************************************************
285 */
286 void pwr_mgmt_check_ble_event(void);
287
288
289 /**
290 ****************************************************************************************
291 * @brief This function is used to push startup information in app timer.
292 * This information will optimize power management strategy.
293 * Note that this function is an advanced API and users should not use it directly.
294 * @param[in] timer_event : EVENT_APP_TIMER_START or EVENT_APP_TIMER_STOP
295 ****************************************************************************************
296 */
297 void pwr_mgmt_notify_timer_event(notify_timer_event_t timer_event);
298
299 /**
300 ****************************************************************************************
301 * @brief Execution of this function allows ARM to enter the WFE state and exit the WFE
302 * state when an event or interrupt occurs.
303 ****************************************************************************************
304 */
305 void pwr_mgmt_wfe_sleep(void);
306
307 /**
308 ****************************************************************************************
309 * @brief Execution of this function allows ARM to enter the ultra sleep state and wakeup
310 * the chip when an event occurs.
311 * @param time_ms : Specifies the wake-up time during ultra sleep. If time_ms is equal to 0,
312 * then sleep timer will not be enabled.
313 * This parameter must be a number between min_value = 0 max_value = 131071999,
314 * if time_ms bigger than 131071999, then 131071999 will be used.
315 ****************************************************************************************
316 */
317 void pwr_mgmt_ultra_sleep(uint32_t time_ms);
318
319 /**
320 ****************************************************************************************
321 * @brief PMU Initialization Function.
322 * @param p_pwr_table : PMU parameter configuration table.
323 * @param sys_clk : the clock of system
324 ****************************************************************************************
325 */
326 void pwr_mgmt_init( pwr_table_t *p_pwr_table, mcu_clock_type_t sys_clk);
327
328 /**
329 ****************************************************************************************
330 * @brief Peripheral Controller Initialization Register interface.
331 * @param p_periph_init : the pointer of device init function.
332 ****************************************************************************************
333 */
334 void pwr_mgmt_dev_init(periph_func_t p_periph_init);
335
336 /**
337 ****************************************************************************************
338 * @brief Device config resume interface.
339 ****************************************************************************************
340 */
341 void pwr_mgmt_dev_resume(void);
342
343 /**
344 ****************************************************************************************
345 * @brief Device config suspend interface.
346 * @return power manager device work state
347 ****************************************************************************************
348 */
349 pwr_mgmt_dev_state_t pwr_mgmt_dev_suspend(void);
350
351 /**
352 ****************************************************************************************
353 * @brief Mem state control under deep sleep & work state.
354 * @param mem_sleep_state : control in deep sleep.
355 * @param mem_work_state : control in work state.
356 ****************************************************************************************
357 */
358 void pwr_mgmt_mem_ctl_set(uint32_t mem_sleep_state, uint32_t mem_work_state);
359
360 /**
361 ****************************************************************************************
362 * @brief Set PMU callback function.
363 * @param dev_check_fun : Device check callback function.
364 * @param before_sleep_fun : Pre-execution callback function for deep sleep.
365 ****************************************************************************************
366 */
367 void pwr_mgmt_set_callback(pwr_dev_check_func_t dev_check_fun, pwr_before_sleep_func_t before_sleep_fun);
368
369 /**
370 ****************************************************************************************
371 * @brief Save context function.
372 ****************************************************************************************
373 */
374 void pwr_mgmt_save_context(void);
375
376 /**
377 ****************************************************************************************
378 * @brief Load context function.
379 ****************************************************************************************
380 */
381 void pwr_mgmt_load_context(void);
382
383 /**
384 ****************************************************************************************
385 * @brief Disable nvic irq.
386 ****************************************************************************************
387 */
388 void pwr_mgmt_disable_nvic_irq(void);
389
390 /**
391 ****************************************************************************************
392 * @brief Enable nvic irq.
393 ****************************************************************************************
394 */
395 void pwr_mgmt_enable_nvic_irq(void);
396
397 /**
398 ****************************************************************************************
399 * @brief Check nvic irq.
400 ****************************************************************************************
401 */
402 bool pwr_mgmt_check_pend_irq(void);
403
404 /**
405 ****************************************************************************************
406 * @brief shutdown power in rtos mode
407 * @retval ::PMR_MGMT_SUCCESS: wakeup from shutdown mode.
408 * @retval ::PMR_MGMT_FAIL: some condition refuse system enter shutdown mode.
409 ****************************************************************************************
410 */
411 uint8_t pwr_mgmt_sleep(void);
412
413 /**
414 ****************************************************************************************
415 * @brief Trace function register.
416 * @param[in] status_trace_func: Trace function.
417 * @param[in] sched_trace_func: Trace function.
418 ****************************************************************************************
419 */
420 void pwr_mgmt_register_trace_func(trace_func_t status_trace_func, trace_func_t sched_trace_func);
421
422 /**
423 ****************************************************************************************
424 * @brief Register callback function before srpg sleep
425 * @param srpg_before_fun : Callback function before srpg sleep
426 ****************************************************************************************
427 */
428 void pwr_mgmt_register_srpg_before_func(srpg_before_func_t srpg_before_fun);
429
430 /** @} */
431
432 #endif
433 /** @} */
434 /** @} */
pwr_before_sleep_func_t
void(* pwr_before_sleep_func_t)(void)
Before sleep function type.
Definition: gr55xx_pwr.h:178
pwr_table_t::pwr_osc
uint16_t pwr_osc
OSC.
Definition: gr55xx_pwr.h:157
pwr_table_t::pwr_ble_ths
uint32_t pwr_ble_ths
BLE timer threshold.
Definition: gr55xx_pwr.h:162
PMR_MGMT_IDLE_MODE
@ PMR_MGMT_IDLE_MODE
Idle state.
Definition: gr55xx_pwr.h:109
pwr_mgmt_mode_t
pwr_mgmt_mode_t
power manager model.
Definition: gr55xx_pwr.h:107
pwr_mgmt_init
void pwr_mgmt_init(pwr_table_t *p_pwr_table, mcu_clock_type_t sys_clk)
PMU Initialization Function.
EVENT_APP_TIMER_START
@ EVENT_APP_TIMER_START
App-timer start state.
Definition: gr55xx_pwr.h:123
mem_check_proc_t
void(* mem_check_proc_t)(void)
mem check process type.
Definition: gr55xx_pwr.h:184
pwr_mgmt_baseband_state_get
pwr_mgmt_mode_t pwr_mgmt_baseband_state_get(void)
Get the power state of baseband.
pwr_mgmt_mode_set
void pwr_mgmt_mode_set(pwr_mgmt_mode_t pm_mode)
Set the specified sleep mode.
pwr_mgmt_ultra_sleep
void pwr_mgmt_ultra_sleep(uint32_t time_ms)
Execution of this function allows ARM to enter the ultra sleep state and wakeup the chip when an even...
periph_func_t
void(* periph_func_t)(void)
Peripheral function type.
Definition: gr55xx_pwr.h:175
pwr_mgmt_dev_init
void pwr_mgmt_dev_init(periph_func_t p_periph_init)
Peripheral Controller Initialization Register interface.
pwr_table_t::pwr_ext
uint16_t pwr_ext
External wake-up.
Definition: gr55xx_pwr.h:156
pwr_mgmt_load_context
void pwr_mgmt_load_context(void)
Load context function.
pwr_mgmt_var_box_t
power manager setting parameter.
Definition: gr55xx_pwr.h:85
EVENT_APP_TIMER_STOP
@ EVENT_APP_TIMER_STOP
App-timer stop state.
Definition: gr55xx_pwr.h:124
pwr_table_t
parameter configuration table.
Definition: gr55xx_pwr.h:154
pwr_mgmt_mem_ctl_set
void pwr_mgmt_mem_ctl_set(uint32_t mem_sleep_state, uint32_t mem_work_state)
Mem state control under deep sleep & work state.
boot_mode_t
boot_mode_t
power manager boot type.
Definition: gr55xx_pwr.h:100
TRC_PWR_RTC1_TIMER_PASS
@ TRC_PWR_RTC1_TIMER_PASS
RTC timer pass.
Definition: gr55xx_pwr.h:141
pwr_table_t::pwr_delay_hus
uint16_t pwr_delay_hus
Delay half us.
Definition: gr55xx_pwr.h:159
DEVICE_IDLE
@ DEVICE_IDLE
Device idle state.
Definition: gr55xx_pwr.h:117
TRC_PWR_RTC_TIMER_PASS
@ TRC_PWR_RTC_TIMER_PASS
RTC timer pass.
Definition: gr55xx_pwr.h:139
pwr_table_t::pwr_delay_hslot
uint8_t pwr_delay_hslot
Delay half slot.
Definition: gr55xx_pwr.h:158
pwr_mgmt_check_ble_event
void pwr_mgmt_check_ble_event(void)
Check whether there are ble events in the queue, and if so, handle them immediately.
TRC_PWR_WDT_TIMER_REFUSE
@ TRC_PWR_WDT_TIMER_REFUSE
AON WDT timer refuse.
Definition: gr55xx_pwr.h:142
pwr_mgmt_mode_get
pwr_mgmt_mode_t pwr_mgmt_mode_get(void)
Get the specified sleep mode.
pwr_mgmt_notify_timer_event
void pwr_mgmt_notify_timer_event(notify_timer_event_t timer_event)
This function is used to push startup information in app timer.
pwr_table
pwr_table_t pwr_table[]
pwr table.
TRC_PWR_WFE_MODE
@ TRC_PWR_WFE_MODE
WFE mode.
Definition: gr55xx_pwr.h:130
pwr_mgmt_check_ext_timer
pwr_mgmt_mode_t pwr_mgmt_check_ext_timer(void)
Get the state of extenal timer.
WARM_BOOT
@ WARM_BOOT
Warm boot state.
Definition: gr55xx_pwr.h:102
pwr_mgmt_sleep
uint8_t pwr_mgmt_sleep(void)
shutdown power in rtos mode
TRC_PWR_APP_TIMER_PASS
@ TRC_PWR_APP_TIMER_PASS
App timer pass.
Definition: gr55xx_pwr.h:135
pwr_mgmt_dev_state_t
pwr_mgmt_dev_state_t
power manager device work state.
Definition: gr55xx_pwr.h:115
TRC_PWR_ACTIVE_MODE
@ TRC_PWR_ACTIVE_MODE
Active mode.
Definition: gr55xx_pwr.h:132
pwr_mgmt_var_box_t::pwr_mgmt_wdt_timer_thrd
uint32_t pwr_mgmt_wdt_timer_thrd
AON WDT threshold.
Definition: gr55xx_pwr.h:89
TRC_PWR_BLE_TIMER_PASS
@ TRC_PWR_BLE_TIMER_PASS
BLE timer pass.
Definition: gr55xx_pwr.h:137
pwr_mgmt_var_box_t::pwr_mgmt_rtc_timer_thrd
uint32_t pwr_mgmt_rtc_timer_thrd
RTC timer threshold.
Definition: gr55xx_pwr.h:88
TRC_PWR_DSLEEP_MODE
@ TRC_PWR_DSLEEP_MODE
Deep sleep mode.
Definition: gr55xx_pwr.h:131
pwr_mgmt_dev_resume
void pwr_mgmt_dev_resume(void)
Device config resume interface.
pwr_mgmt_ble_wakeup
void pwr_mgmt_ble_wakeup(void)
Wake the BLE core via an external request.
pwr_mgmt_register_trace_func
void pwr_mgmt_register_trace_func(trace_func_t status_trace_func, trace_func_t sched_trace_func)
Trace function register.
TRC_PWR_WDT_TIMER_PASS
@ TRC_PWR_WDT_TIMER_PASS
AON WDT timer pass.
Definition: gr55xx_pwr.h:143
PMR_MGMT_SLEEP_MODE
@ PMR_MGMT_SLEEP_MODE
Deep sleep state.
Definition: gr55xx_pwr.h:110
TRC_PWR_BLE_RET_DSLEEP
@ TRC_PWR_BLE_RET_DSLEEP
BLE return deep sleep.
Definition: gr55xx_pwr.h:133
pwr_dev_check_func_t
pwr_mgmt_dev_state_t(* pwr_dev_check_func_t)(void)
Device check function type.
Definition: gr55xx_pwr.h:181
pwr_mgmt_disable_nvic_irq
void pwr_mgmt_disable_nvic_irq(void)
Disable nvic irq.
TRC_PWR_APP_TIMER_REFUSE
@ TRC_PWR_APP_TIMER_REFUSE
App timer refuse.
Definition: gr55xx_pwr.h:134
pwr_table_t::pwr_timer_ths
uint32_t pwr_timer_ths
APP timer threshold.
Definition: gr55xx_pwr.h:161
pwr_mgmt_check_pend_irq
bool pwr_mgmt_check_pend_irq(void)
Check nvic irq.
pwr_mgmt_schedule
void pwr_mgmt_schedule(void)
Sleep Policy Scheduling Function.
TRC_PWR_BLE_TIMER_REFUSE
@ TRC_PWR_BLE_TIMER_REFUSE
BLE timer refuse.
Definition: gr55xx_pwr.h:136
pwr_mgmt_var_box_t::pwr_mgmt_ble_core_thrd
uint32_t pwr_mgmt_ble_core_thrd
BLE timer threshold.
Definition: gr55xx_pwr.h:87
pwr_table_t::pwr_push_hus
uint16_t pwr_push_hus
Push half us.
Definition: gr55xx_pwr.h:160
notify_timer_event_t
notify_timer_event_t
power manager app timer work state.
Definition: gr55xx_pwr.h:122
pwr_mgmt_save_context
void pwr_mgmt_save_context(void)
Save context function.
pwr_mgmt_var_box_t::pwr_mgmt_app_timer_thrd
uint32_t pwr_mgmt_app_timer_thrd
App timer threshold.
Definition: gr55xx_pwr.h:86
DEVICE_BUSY
@ DEVICE_BUSY
Device busy state.
Definition: gr55xx_pwr.h:116
pwr_mgmt_wfe_sleep
void pwr_mgmt_wfe_sleep(void)
Execution of this function allows ARM to enter the WFE state and exit the WFE state when an event or ...
srpg_before_func_t
uint8_t(* srpg_before_func_t)(void)
SRPG before function type.
Definition: gr55xx_pwr.h:187
pwr_mgmt_get_wakeup_flag
boot_mode_t pwr_mgmt_get_wakeup_flag(void)
Get the current boot mode.
pwr_mgmt_enable_nvic_irq
void pwr_mgmt_enable_nvic_irq(void)
Enable nvic irq.
pwr_table_t::pwr_dur
uint16_t pwr_dur
Duration.
Definition: gr55xx_pwr.h:155
PMR_MGMT_ACTIVE_MODE
@ PMR_MGMT_ACTIVE_MODE
Full speed state.
Definition: gr55xx_pwr.h:108
pwr_mgmt_shutdown
pwr_mgmt_mode_t pwr_mgmt_shutdown(void)
This function allows ARM to enter deep sleep mode, but users should not use this function directly.
pwr_mgmt_set_callback
void pwr_mgmt_set_callback(pwr_dev_check_func_t dev_check_fun, pwr_before_sleep_func_t before_sleep_fun)
Set PMU callback function.
TRC_PWR_RTC1_TIMER_REFUSE
@ TRC_PWR_RTC1_TIMER_REFUSE
RTC timer refuse.
Definition: gr55xx_pwr.h:140
pwr_mgmt_register_srpg_before_func
void pwr_mgmt_register_srpg_before_func(srpg_before_func_t srpg_before_fun)
Register callback function before srpg sleep.
TRC_PWR_RTC_TIMER_REFUSE
@ TRC_PWR_RTC_TIMER_REFUSE
RTC timer refuse.
Definition: gr55xx_pwr.h:138
trace_func_t
void(* trace_func_t)(uint8_t)
Trace function type.
Definition: gr55xx_pwr.h:172
pwr_mgmt_set_wakeup_flag
void pwr_mgmt_set_wakeup_flag(boot_mode_t boot_mode)
Mark the mode of next boot, cold boot or warm boot.
pwr_mgmt_dev_suspend
pwr_mgmt_dev_state_t pwr_mgmt_dev_suspend(void)
Device config suspend interface.
COLD_BOOT
@ COLD_BOOT
Cold boot state.
Definition: gr55xx_pwr.h:101