| /* |
| * Copyright (c) 2020 Intel corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_POWER_POWER_STATE_H_ |
| #define ZEPHYR_INCLUDE_POWER_POWER_STATE_H_ |
| |
| #include <sys/util.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @defgroup pm_states Power Management states |
| * @{ |
| */ |
| |
| /** |
| * @enum pm_state Power management state |
| */ |
| enum pm_state { |
| /** |
| * @brief Runtime active state |
| * |
| * The system is fully powered and active. |
| * |
| * @note This state is correlated with ACPI G0/S0 state |
| */ |
| PM_STATE_ACTIVE, |
| /** |
| * @brief Runtime idle state |
| * |
| * Runtime idle is a system sleep state in which all of the cores |
| * enter deepest possible idle state and wait for interrupts, no |
| * requirements for the devices, leaving them at the states where |
| * they are. |
| * |
| * @note This state is correlated with ACPI S0ix state |
| */ |
| PM_STATE_RUNTIME_IDLE, |
| /** |
| * @brief Suspend to idle state |
| * |
| * The system goes through a normal platform suspend where it puts |
| * all of the cores in deepest possible idle state and *may* puts peripherals |
| * into low-power states. No operating state is lost (ie. the cpu core |
| * does not lose execution context), so the system can go back to where |
| * it left off easily enough. |
| * |
| * @note This state is correlated with ACPI S1 state |
| */ |
| PM_STATE_SUSPEND_TO_IDLE, |
| /** |
| * @brief Standby state |
| * |
| * In addition to putting peripherals into low-power states all |
| * non-boot CPUs are powered off. It should allow more energy to be |
| * saved relative to suspend to idle, but the resume latency will |
| * generally be greater than for that state. But it should be the same |
| * state with suspend to idle state on uniprocesser system. |
| * |
| * @note This state is correlated with ACPI S2 state |
| */ |
| PM_STATE_STANDBY, |
| /** |
| * @brief Suspend to ram state |
| * |
| * This state offers significant energy savings by powering off as much |
| * of the system as possible, where memory should be placed into the |
| * self-refresh mode to retain its contents. The state of devices and |
| * CPUs is saved and held in memory, and it may require some boot- |
| * strapping code in ROM to resume the system from it. |
| * |
| * @note This state is correlated with ACPI S3 state |
| */ |
| PM_STATE_SUSPEND_TO_RAM, |
| /** |
| * @brief Suspend to disk state |
| * |
| * This state offers significant energy savings by powering off as much |
| * of the system as possible, including the memory. The contents of |
| * memory are written to disk or other non-volatile storage, and on resume |
| * it's read back into memory with the help of boot-strapping code, |
| * restores the system to the same point of execution where it went to |
| * suspend to disk. |
| * |
| * @note This state is correlated with ACPI S4 state |
| */ |
| PM_STATE_SUSPEND_TO_DISK, |
| /** |
| * @brief Soft off state |
| * |
| * This state consumes a minimal amount of power and requires a large |
| * latency in order to return to runtime active state. The contents of |
| * system(CPU and memory) will not be preserved, so the system will be |
| * restarted as if from initial power-up and kernel boot. |
| * |
| * @note This state is correlated with ACPI G2/S5 state |
| */ |
| PM_STATE_SOFT_OFF |
| }; |
| |
| /** |
| * @} |
| */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |