LFD432 Optimizing Linux Device Drivers for Power Efficiency

This course will teach you how to develop device drivers for Linux systems, grounded with a basic familiarity and understanding of the underlying Linux kernel. You’ll learn:

  • The different kinds of device drivers used in Linux.
  • The appropriate APIs through which devices (both hardware and software) interface with the kernel.
  • Necessary modules and techniques for developing and debugging Linux drivers.
  • And more.

The information in this course will work with any major Linux distribution.


This course is for Linux developers interested in learning how to write Linux device drivers with robust power management features. Students should be proficient in the C programming language, be familiar with the basic Linux kernel development environment and have some knowledge of kernel internals, have experience with Linux device drivers, and be comfortable developing in a Linux environment.


  1. Introduction
  2. Procedures and Documentation
  3. Power Management Overview
  4. The Linux Kernel View of Power Management
  5. Power Management in Android
  6. Notifiers**
  7. CPU Frequency Scaling**
  8. CPU Idle
  9. Ftrace
  10. Perf
  11. Measuring Power Usage and Latencies
  12. Debugging power usage
  13. Crash
  14. Kernel Core Dumps
  15. System-wide Power Management
  16. Runtime Power Management
  17. Common clock framework **
  18. Regulator framework **
  19. Retrofit for PM
  20. Optimize for PM
  21. Summary and Lookout

** These sections may be considered in part or in whole as optional. They contain either background reference material, specialized topics, or advanced subjects. The instructor may choose to cover or not cover them depending on classroom experience and time constraints.