.. SPDX-License-Identifier: GPL-2.0

==============================
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.


General information for driver authors
======================================

This section contains documentation that should, at some point or other, be
of interest to most developers working on device drivers.

.. toctree::
   :maxdepth: 1

   basics
   driver-model/index
   device_link
   infrastructure
   ioctl
   pm/index

Useful support libraries
========================

This section contains documentation that should, at some point or other, be
of interest to most developers working on device drivers.

.. toctree::
   :maxdepth: 1

   early-userspace/index
   connector
   device-io
   devfreq
   dma-buf
   component
   io-mapping
   io_ordering
   uio-howto
   vfio-mediated-device
   vfio
   vfio-pci-device-specific-driver-acceptance

Bus-level documentation
=======================

.. toctree::
   :maxdepth: 1

   auxiliary_bus
   cxl/index
   eisa
   firewire
   i3c/index
   isa
   men-chameleon-bus
   pci/index
   rapidio/index
   slimbus
   usb/index
   virtio/index
   vme
   w1
   xillybus


Subsystem-specific APIs
=======================

.. toctree::
   :maxdepth: 1

   80211/index
   acpi/index
   backlight/lp855x-driver.rst
   clk
   coco/index
   console
   crypto/index
   dmaengine/index
   dpll
   edac
   extcon
   firmware/index
   fpga/index
   frame-buffer
   aperture
   generic-counter
   gpio/index
   hsi
   hte/index
   i2c
   iio/index
   infiniband
   input
   interconnect
   ipmb
   ipmi
   libata
   mailbox
   md/index
   media/index
   mei/index
   memory-devices/index
   message-based
   misc_devices
   miscellaneous
   mmc/index
   mtd/index
   mtdnand
   nfc/index
   ntb
   nvdimm/index
   nvmem
   parport-lowlevel
   phy/index
   pin-control
   pldmfw/index
   pps
   ptp
   pwm
   pwrseq
   regulator
   reset
   rfkill
   s390-drivers
   scsi
   serial/index
   sm501
   soundwire/index
   spi
   surface_aggregator/index
   switchtec
   sync_file
   target
   tee
   thermal/index
   tty/index
   wbrf
   wmi
   xilinx/index
   zorro

.. only::  subproject and html

   Indices
   =======

   * :ref:`genindex`
