Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
pm.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2014 Wind River Systems, Inc.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_PM_PM_H_
14#define ZEPHYR_INCLUDE_PM_PM_H_
15
16#include <zephyr/types.h>
17#include <zephyr/sys/slist.h>
18#include <zephyr/pm/state.h>
19#include <zephyr/toolchain.h>
20#include <errno.h>
21#include <stdbool.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
35
44
64 sys_snode_t _node;
65 union {
66 struct {
71 void (*state_entry)(enum pm_state state);
76 void (*state_exit)(enum pm_state state);
77 };
78 struct {
83 void (*substate_entry)(enum pm_state state, uint8_t substate_id);
88 void (*substate_exit)(enum pm_state state, uint8_t substate_id);
89 };
90 };
91 bool report_substate; /* 0 is for backwards compatibility that didn't report substates */
92};
93
94#if defined(CONFIG_PM) || defined(__DOXYGEN__)
107bool pm_state_force(uint8_t cpu, const struct pm_state_info *info);
108
117void pm_notifier_register(struct pm_notifier *notifier);
118
130
142
161
165
172
195
218
222
223#else /* CONFIG_PM */
224
225static inline void pm_notifier_register(struct pm_notifier *notifier)
226{
227 ARG_UNUSED(notifier);
228}
229
230static inline int pm_notifier_unregister(struct pm_notifier *notifier)
231{
232 ARG_UNUSED(notifier);
233
234 return -ENOSYS;
235}
236
237static inline const struct pm_state_info *pm_state_next_get(uint8_t cpu)
238{
239 ARG_UNUSED(cpu);
240
241 return NULL;
242}
243
244static inline void pm_system_resume(void)
245{
246}
247
248#endif /* CONFIG_PM */
249
250#ifdef __cplusplus
251}
252#endif
253
254#endif /* ZEPHYR_INCLUDE_PM_PM_H_ */
System error numbers.
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:44
pm_state
Power management state.
Definition state.h:34
void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id)
Do any SoC or architecture specific post ops after sleep state exits.
void pm_state_set(enum pm_state state, uint8_t substate_id)
Put processor into a power state.
void pm_notifier_register(struct pm_notifier *notifier)
Register a power management notifier.
bool pm_state_force(uint8_t cpu, const struct pm_state_info *info)
Force usage of given power state.
const struct pm_state_info * pm_state_next_get(uint8_t cpu)
Gets the next power state that will be used.
void pm_system_resume(void)
Notify exit from kernel sleep.
int pm_notifier_unregister(struct pm_notifier *notifier)
Unregister a power management notifier.
#define ENOSYS
Function not implemented.
Definition errno.h:83
#define NULL
Definition iar_missing_defs.h:20
state
Definition parser_state.h:29
Header file for the single-linked list API.
Header file for System Power Management state definitions.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Power management notifier struct.
Definition pm.h:63
bool report_substate
Definition pm.h:91
void(* substate_entry)(enum pm_state state, uint8_t substate_id)
Application defined function for doing any target specific operations for power state entry.
Definition pm.h:83
void(* state_entry)(enum pm_state state)
Application defined function for doing any target specific operations for power state entry.
Definition pm.h:71
void(* substate_exit)(enum pm_state state, uint8_t substate_id)
Application defined function for doing any target specific operations for power state exit.
Definition pm.h:88
void(* state_exit)(enum pm_state state)
Application defined function for doing any target specific operations for power state exit.
Definition pm.h:76
Information about a power management state.
Definition state.h:121
uint8_t substate_id
Some platforms have multiple states that map to one Zephyr power state.
Definition state.h:149
Macros to abstract toolchain specific capabilities.