Master the art of developing customized device drivers for your embedded Linux systems
▶What You Will Learn
⦁Explore and adopt Linux kernel helpers for locking, work deferral, and interrupt management
⦁Understand the Regmap subsystem to manage memory accesses and work with the IRQ subsystem
⦁Get to grips with the PCI subsystem and write reliable drivers for PCI devices
⦁Write full multimedia device drivers using ALSA SoC and the V4L2 framework
⦁Build power-aware device drivers using the kernel power management framework
⦁Find out how to get the most out of miscellaneous kernel subsystems such as NVMEM and Watchdog
▶Key Features
⦁Stay up to date with the Linux PCI, ASoC, and V4L2 subsystems and write device drivers for them
⦁Get to grips with the Linux kernel power management infrastructure
⦁Adopt a practical approach to customizing your Linux environment using best practices
▶Who This Book Is For
This book is for embedded developers, Linux system engineers, and system programmers who want to explore Linux kernel frameworks and subsystems. C programming skills and a basic understanding of driver development are necessary to get started with this book.
▶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 Linuxbased 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.