|  | /* | 
|  | * 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 |