English
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.
Useful support libraries¶
This section contains documentation that should, at some point or other, be of interest to most developers working on device drivers.
- Early Userspace
- Kernel Connector
- Bus-Independent Device Accesses
- Device Frequency Scaling
- Buffer Sharing and Synchronization (dma-buf)
- Component Helper for Aggregate Drivers
- The io_mapping functions
- Ordering I/O writes to memory-mapped addresses
- The Userspace I/O HOWTO
- VFIO Mediated devices
- VFIO - “Virtual Function I/O”
- Acceptance criteria for vfio-pci device specific driver variants
Bus-level documentation¶
- Auxiliary Bus
- Compute Express Link
- EISA bus support
- Firewire (IEEE 1394) driver Interface Guide
- I3C subsystem
- ISA Drivers
- MEN Chameleon Bus
- The Linux PCI driver implementer’s API guide
- The Linux RapidIO Subsystem
- Linux kernel SLIMbus support
- Linux USB API
- Virtio
- VME Device Drivers
- W1: Dallas’ 1-wire bus
- Xillybus driver for generic FPGA interface
Subsystem-specific APIs¶
- Linux 802.11 Driver Developer’s Guide
- ACPI Support
- Kernel driver lp855x
- The Common Clk Framework
- Console Drivers
- Crypto Drivers
- DMAEngine documentation
- The Linux kernel dpll subsystem
- Error Detection And Correction (EDAC) Devices
- Linux Firmware API
- FPGA Subsystem
- Frame Buffer Library
- Managing Ownership of the Framebuffer Aperture
- Generic Counter Interface
- General Purpose Input/Output (GPIO)
- High Speed Synchronous Serial Interface (HSI)
- The Linux Hardware Timestamping Engine (HTE)
- I2C and SMBus Subsystem
- Industrial I/O
- InfiniBand and Remote DMA (RDMA) Interfaces
- Input Subsystem
- Generic System Interconnect Subsystem
- IPMB Driver for a Satellite MC
- The Linux IPMI Driver
- libATA Developer’s Guide
- The Common Mailbox Framework
- RAID
- Media subsystem kernel internal API
- Intel(R) Management Engine Interface (Intel(R) MEI)
- Memory Controller drivers
- Message-based devices
- Miscellaneous Devices
- Parallel Port Devices
- 16x50 UART Driver
- Pulse-Width Modulation (PWM)
- MMC/SD/SDIO card support
- Memory Technology Device (MTD)
- MTD NAND Driver Programming Interface
- Near Field Communication
- NTB Drivers
- Non-Volatile Memory Device (NVDIMM)
- NVMEM Subsystem
- PARPORT interface documentation
- Generic PHY Framework
- PINCTRL (PIN CONTROL) subsystem
- PLDM Firmware Flash Update Library
- Overview of the
pldmfw
library - PPS - Pulse Per Second
- PTP hardware clock infrastructure for Linux
- Pulse Width Modulation (PWM) interface
- Voltage and current regulator API
- Reset controller API
- rfkill - RF kill switch support
- Writing s390 channel device drivers
- SCSI Interfaces Guide
- Support for Serial devices
- SM501 Driver
- SoundWire Documentation
- Serial Peripheral Interface (SPI)
- Surface System Aggregator Module (SSAM)
- Linux Switchtec Support
- Sync File API Guide
- target and iSCSI Interfaces Guide
- TEE (Trusted Execution Environment) driver API
- Thermal
- TTY
- WBRF - Wifi Band RFI Mitigations
- WMI Driver API
- Xilinx FPGA
- Writing Device Drivers for Zorro Devices