The Linux driver implementer’s API guide¶
The kernel offers a wide variety of interfaces to support the development of device drivers. This document is an only somewhat organized collection of some of those interfaces — it will hopefully get better over time! The available subsections can be seen below.
Table of contents
- Driver Basics
- Device drivers infrastructure
- Device Power Management
- Bus-Independent Device Accesses
- Buffer Sharing and Synchronization
- Device links
- Message-based devices
- Sound Devices
- Frame Buffer Library
- Voltage and current regulator API
- Industrial I/O
- Input Subsystem
- Linux USB API
- The Linux-USB Host Side API
- USB Gadget API for Linux
- USB Anchors
- USB bulk streams
- USB core callbacks
- USB DMA
- USB Request Block (URB)
- Power Management for USB
- USB hotplugging
- USB device persistence during system suspend
- USB Error codes
- Writing USB Device Drivers
- Synopsys DesignWare Core SuperSpeed USB 3.0 Controller
- Writing a MUSB Glue Layer
- USB Type-C connector class
- USB3 debug port
- PCI Support Library
- PCI Hotplug Support Library
- Serial Peripheral Interface (SPI)
- I2C and SMBus Subsystem
- High Speed Synchronous Serial Interface (HSI)
- Error Detection And Correction (EDAC) Devices
- SCSI Interfaces Guide
- libATA Developer’s Guide
- MTD NAND Driver Programming Interface
- Parallel Port Devices
- 16x50 UART Driver
- Pulse-Width Modulation (PWM)
- W1: Dallas’ 1-wire bus
- RapidIO Subsystem Guide
- Writing s390 channel device drivers
- VME Device Drivers
- Linux 802.11 Driver Developer’s Guide
- The Userspace I/O HOWTO
- Linux Firmware API
- PINCTRL (PIN CONTROL) subsystem
- Top-level interface
- Pin groups
- Pin configuration
- Interaction with the GPIO subsystem
- PINMUX interfaces
- What is pinmuxing?
- Pinmux conventions
- Pinmux drivers
- Pin control interaction with the GPIO subsystem
- GPIO mode pitfalls
- Board/machine configuration
- Complex mappings
- Pin control requests from drivers
- Drivers needing both pin control and GPIOs
- System pin control hogging
- Runtime pinmuxing
- General Purpose Input/Output (GPIO)
- Miscellaneous Devices
- DMAEngine documentation