Linux has sophisticated power management functions. I have described four main components:
- CPU-freq changes the Operating Performance Point of each processor core to reduce power on those that are busy but have some bandwidth to spare, and so allow the opportunity to scale the frequency back. OPPs are known as P-States in the ACPI specification.
- CPI-Idle selects deeper idle states when the CPU is not expected to be woken up for a while. Idle states are known as C-States in the ACPI specification.
- Runtime power management will shut down peripherals that are not needed.
- System sleep modes will put the whole system into a low power state. They are usually under end user control, for example, by pressing a standby button. System sleep states are known as S-States in the ACPI specification.
The majority of the power management is done for you by the BSP. Your main task is...