What this book covers
Chapter 1, Linux Kernel Concepts for Embedded Developers, walks through the Linux kernel helpers for locking, blocking I/O, deferring work, and interrupt management.
Chapter 2, Leveraging the Regmap API and Simplifying the Code, provides an overview of the Regmap framework and shows you how to leverage its APIs to ease interrupt management and abstract register access.
Chapter 3, Delving into the MFD Subsystem and Syscon API, focuses on MFD drivers in the Linux kernel, their APIs, and their structures, as well as introducing the syscon
and simple-mfd
helpers.
Chapter 4, Storming the Common Clock Framework, explains the Linux kernel clock framework and explores both producer and consumer device drivers, as well as their device tree bindings.
Chapter 5, ALSA SoC Framework – Leveraging Codec and Platform Class Drivers, discusses ALSA driver development for both codec and platform devices and introduces concepts such as kcontrol
and digital audio power management (DAPM).
Chapter 6, ALSA SoC Framework – Delving into the Machine Class Drivers, dives into ALSA machine class driver development and shows you how to bind both codec and platform together and how to define audio routes.
Chapter 7, Demystifying V4L2 and Video Capture Device Drivers, describes V4L2's key concepts. It focuses on bridge video devices, introduces the concept of subdevices, and covers their respective device drivers.
Chapter 8, Integrating with V4L2 Async and Media Controller Frameworks, introduces the concept of asynchronous probing so that you don't have to care about bridge and subdevice probing order. Finally, this chapter introduces media controller frameworks in order to provide video routing and video pipe customizations.
Chapter 9, Leveraging V4L2 API from the User Space, closes our teaching series on V4L2 and deals with V4L2 from the user space. It first teaches you how to write C code in order to open, configure, and grab data from a video device. It then shows you how to write as little code as possible by leveraging user-space video-related tools such as v4l2-ctl
and media-ctl
.
Chapter 10, Linux Kernel Power Management, discusses power management on Linux-based systems and teaches you how to write power-aware device drivers.
Chapter 11, Writing PCI Device Drivers, deals with the PCI subsystem and introduces you to its Linux kernel implementation. This chapter also shows you how to write PCI device drivers.
Chapter 12, Leveraging the NVMEM Framework, describes the Linux Non-Volatile Memory (NVEM) subsystem. It first teaches you how to write both provider and consumer drivers as well as their device tree bindings. Then, it shows you how to take the most out of the device from user space.
Chapter 13, Watchdog Device Drivers, provides an accurate description of the Linux kernel Watchdog subsystem. It first introduces you to Watchdog device drivers and gradually takes you through the core of the subsystem, introducing some key concepts such as pre-timeout and governors. Toward the end, this chapter teaches you how to manage the subsystem from the user space.
Chapter 14, Linux Kernel Debugging Tips and Best Practices, highlights the most-used Linux kernel debugging and tracing techniques using kernel-embedded tools such as ftrace
and oops message analysis.