diff options
Diffstat (limited to 'kernel/Documentation/cpuidle/driver.txt')
-rw-r--r-- | kernel/Documentation/cpuidle/driver.txt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/kernel/Documentation/cpuidle/driver.txt b/kernel/Documentation/cpuidle/driver.txt new file mode 100644 index 000000000..1b0d81d92 --- /dev/null +++ b/kernel/Documentation/cpuidle/driver.txt @@ -0,0 +1,37 @@ + + + Supporting multiple CPU idle levels in kernel + + cpuidle drivers + + + + +cpuidle driver hooks into the cpuidle infrastructure and handles the +architecture/platform dependent part of CPU idle states. Driver +provides the platform idle state detection capability and also +has mechanisms in place to support actual entry-exit into CPU idle states. + +cpuidle driver initializes the cpuidle_device structure for each CPU device +and registers with cpuidle using cpuidle_register_device. + +If all the idle states are the same, the wrapper function cpuidle_register +could be used instead. + +It can also support the dynamic changes (like battery <-> AC), by using +cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, +cpuidle_resume_and_unlock. + +Interfaces: +extern int cpuidle_register(struct cpuidle_driver *drv, + const struct cpumask *const coupled_cpus); +extern int cpuidle_unregister(struct cpuidle_driver *drv); +extern int cpuidle_register_driver(struct cpuidle_driver *drv); +extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); +extern int cpuidle_register_device(struct cpuidle_device *dev); +extern void cpuidle_unregister_device(struct cpuidle_device *dev); + +extern void cpuidle_pause_and_lock(void); +extern void cpuidle_resume_and_unlock(void); +extern int cpuidle_enable_device(struct cpuidle_device *dev); +extern void cpuidle_disable_device(struct cpuidle_device *dev); |