Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 1 | ======================================== |
| 2 | The Linux driver implementer's API guide |
| 3 | ======================================== |
| 4 | |
| 5 | The kernel offers a wide variety of interfaces to support the development |
| 6 | of device drivers. This document is an only somewhat organized collection |
| 7 | of some of those interfaces — it will hopefully get better over time! The |
| 8 | available subsections can be seen below. |
| 9 | |
| 10 | .. class:: toc-title |
| 11 | |
| 12 | Table of contents |
| 13 | |
| 14 | .. toctree:: |
| 15 | :maxdepth: 2 |
| 16 | |
Mauro Carvalho Chehab | fe34c89 | 2019-06-18 12:34:59 -0300 | [diff] [blame] | 17 | driver-model/index |
Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 18 | basics |
| 19 | infrastructure |
Jonathan Corbet | 6505a18 | 2020-03-02 15:26:38 -0700 | [diff] [blame] | 20 | ioctl |
Mauro Carvalho Chehab | ec4b78a | 2019-06-18 15:00:25 -0300 | [diff] [blame] | 21 | early-userspace/index |
Rafael J. Wysocki | 2728b2d | 2017-02-02 01:32:13 +0100 | [diff] [blame] | 22 | pm/index |
Mauro Carvalho Chehab | 18bcaa4 | 2018-05-07 06:35:44 -0300 | [diff] [blame] | 23 | clk |
Jonathan Corbet | 8a8a602 | 2017-01-27 15:43:01 -0700 | [diff] [blame] | 24 | device-io |
Daniel Vetter | 868c97a | 2016-12-09 19:53:05 +0100 | [diff] [blame] | 25 | dma-buf |
Lukas Wunner | aad80040 | 2016-12-04 13:10:04 +0100 | [diff] [blame] | 26 | device_link |
Daniel Vetter | 4d69c80 | 2019-02-08 00:27:56 +0100 | [diff] [blame] | 27 | component |
Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 28 | message-based |
rd.dunlab@gmail.com | 75e70ad | 2019-10-09 20:52:51 -0700 | [diff] [blame] | 29 | infiniband |
Thomas Zimmermann | 7283f86 | 2022-06-22 16:01:33 +0200 | [diff] [blame] | 30 | aperture |
Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 31 | frame-buffer |
Jonathan Corbet | 028f253 | 2017-01-27 16:50:34 -0700 | [diff] [blame] | 32 | regulator |
Philipp Zabel | 907d1f1 | 2020-12-01 12:57:54 +0100 | [diff] [blame] | 33 | reset |
Jonathan Cameron | 49b2fd6 | 2017-01-01 12:32:45 +0000 | [diff] [blame] | 34 | iio/index |
Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 35 | input |
Mauro Carvalho Chehab | 4ad4b21 | 2017-04-05 10:22:57 -0300 | [diff] [blame] | 36 | usb/index |
Randy Dunlap | ea2ae0e | 2018-09-04 17:02:24 -0700 | [diff] [blame] | 37 | firewire |
Logan Gunthorpe | fcc78f9 | 2018-10-04 15:27:39 -0600 | [diff] [blame] | 38 | pci/index |
Dan Williams | 4cdadfd | 2021-02-16 20:09:50 -0800 | [diff] [blame] | 39 | cxl/index |
Jonathan Corbet | 5e99578 | 2016-09-06 07:15:24 -0600 | [diff] [blame] | 40 | spi |
| 41 | i2c |
Mauro Carvalho Chehab | ac499fb | 2019-06-29 07:36:46 -0300 | [diff] [blame] | 42 | ipmb |
Mauro Carvalho Chehab | b25fc49 | 2020-05-01 17:37:48 +0200 | [diff] [blame] | 43 | ipmi |
Boris Brezillon | bd360e8 | 2017-12-12 11:00:07 +0100 | [diff] [blame] | 44 | i3c/index |
Mauro Carvalho Chehab | 9b1f4402 | 2019-06-18 17:15:10 -0300 | [diff] [blame] | 45 | interconnect |
Leonard Crestez | 83ededd | 2019-11-19 18:38:56 +0200 | [diff] [blame] | 46 | devfreq |
Jonathan Corbet | 5e99578 | 2016-09-06 07:15:24 -0600 | [diff] [blame] | 47 | hsi |
Mauro Carvalho Chehab | 6634fbb | 2016-10-26 14:14:45 -0200 | [diff] [blame] | 48 | edac |
Mauro Carvalho Chehab | 6020236 | 2017-05-12 09:59:02 -0300 | [diff] [blame] | 49 | scsi |
Mauro Carvalho Chehab | 0ec8841 | 2017-05-12 08:14:47 -0300 | [diff] [blame] | 50 | libata |
Randy Dunlap | 6a59fd7 | 2018-04-14 10:51:06 -0700 | [diff] [blame] | 51 | target |
Mauro Carvalho Chehab | d8451df | 2020-06-23 15:31:37 +0200 | [diff] [blame] | 52 | mailbox |
Mauro Carvalho Chehab | 609f212 | 2017-05-13 07:10:44 -0300 | [diff] [blame] | 53 | mtdnand |
Jonathan Corbet | dcec3c8 | 2016-08-20 13:17:32 -0600 | [diff] [blame] | 54 | miscellaneous |
Tomas Winkler | 7e527e1 | 2019-06-03 12:14:00 +0300 | [diff] [blame] | 55 | mei/index |
Mauro Carvalho Chehab | 43f6c07 | 2019-06-18 16:40:16 -0300 | [diff] [blame] | 56 | mtd/index |
Mauro Carvalho Chehab | 19024c0 | 2019-06-18 16:48:15 -0300 | [diff] [blame] | 57 | mmc/index |
Mauro Carvalho Chehab | ae4a050 | 2019-06-18 16:32:31 -0300 | [diff] [blame] | 58 | nvdimm/index |
Mauro Carvalho Chehab | b4c1064 | 2017-05-12 10:28:13 -0300 | [diff] [blame] | 59 | w1 |
Mauro Carvalho Chehab | d2bdd48 | 2019-06-18 16:03:23 -0300 | [diff] [blame] | 60 | rapidio/index |
Mauro Carvalho Chehab | bcb1a87 | 2017-05-12 08:57:50 -0300 | [diff] [blame] | 61 | s390-drivers |
Martyn Welch | 75a163c | 2016-10-21 22:15:27 +0100 | [diff] [blame] | 62 | vme |
Jonathan Corbet | 0bb33e2 | 2016-11-18 16:04:48 -0700 | [diff] [blame] | 63 | 80211/index |
Alexander Dahl | cadf8106 | 2017-01-28 10:45:32 +0100 | [diff] [blame] | 64 | uio-howto |
Luis R. Rodriguez | 113ccc3 | 2016-12-16 03:10:36 -0800 | [diff] [blame] | 65 | firmware/index |
Drew Fustini | 5513b41 | 2021-03-01 21:30:58 -0800 | [diff] [blame] | 66 | pin-control |
Jonathan Neuschäfer | 7e63325 | 2018-03-09 00:40:18 +0100 | [diff] [blame] | 67 | gpio/index |
Mauro Carvalho Chehab | c0b11a5 | 2019-06-18 16:50:07 -0300 | [diff] [blame] | 68 | md/index |
Mauro Carvalho Chehab | d29e1ef | 2020-03-10 13:57:48 +0100 | [diff] [blame] | 69 | media/index |
Mauro Carvalho Chehab | c7e2c06 | 2017-03-31 18:17:00 -0300 | [diff] [blame] | 70 | misc_devices |
Mauro Carvalho Chehab | e253d2c55 | 2019-06-18 16:46:30 -0300 | [diff] [blame] | 71 | nfc/index |
Vinod Koul | 8a0698c | 2017-11-03 10:19:37 +0530 | [diff] [blame] | 72 | dmaengine/index |
Sagar Dharia | 202318d | 2017-12-11 23:42:55 +0000 | [diff] [blame] | 73 | slimbus |
Sanyog Kale | 8ecf426 | 2017-12-14 11:19:32 +0530 | [diff] [blame] | 74 | soundwire/index |
Mauro Carvalho Chehab | eaf7b46 | 2019-07-26 09:51:12 -0300 | [diff] [blame] | 75 | thermal/index |
Alan Tull | 66c472c | 2018-05-16 18:50:02 -0500 | [diff] [blame] | 76 | fpga/index |
Changbin Du | 680e6ff | 2019-04-25 23:30:54 +0800 | [diff] [blame] | 77 | acpi/index |
Dave Ertman | 7de3697 | 2020-12-02 16:54:24 -0800 | [diff] [blame] | 78 | auxiliary_bus |
Mauro Carvalho Chehab | 5619835 | 2019-06-18 11:44:24 -0300 | [diff] [blame] | 79 | backlight/lp855x-driver.rst |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 80 | connector |
| 81 | console |
| 82 | dcdbas |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 83 | eisa |
| 84 | isa |
| 85 | isapnp |
Pragat Pandya | fcd6807 | 2020-03-03 10:33:00 +0530 | [diff] [blame] | 86 | io-mapping |
Pragat Pandya | d1ce3500 | 2020-03-03 10:33:01 +0530 | [diff] [blame] | 87 | io_ordering |
William Breathitt Gray | 09e7d4e | 2019-04-02 15:30:38 +0900 | [diff] [blame] | 88 | generic-counter |
Mauro Carvalho Chehab | 652a49b | 2019-06-18 15:03:13 -0300 | [diff] [blame] | 89 | memory-devices/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 90 | men-chameleon-bus |
| 91 | ntb |
| 92 | nvmem |
| 93 | parport-lowlevel |
Mauro Carvalho Chehab | c92992f | 2019-04-22 16:49:11 -0300 | [diff] [blame] | 94 | pps |
| 95 | ptp |
Mauro Carvalho Chehab | 4745dc8a | 2019-06-27 16:36:04 -0300 | [diff] [blame] | 96 | phy/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 97 | pwm |
Jacob Keller | b826562 | 2020-07-23 17:21:59 -0700 | [diff] [blame] | 98 | pldmfw/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 99 | rfkill |
Mauro Carvalho Chehab | 65388da | 2019-06-27 16:31:35 -0300 | [diff] [blame] | 100 | serial/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 101 | sm501 |
Maximilian Luz | 8d77928 | 2020-12-21 19:39:57 +0100 | [diff] [blame] | 102 | surface_aggregator/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 103 | switchtec |
| 104 | sync_file |
Jiri Slaby | 2a72b1b | 2022-04-19 09:43:02 +0200 | [diff] [blame] | 105 | tty/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 106 | vfio-mediated-device |
| 107 | vfio |
Alex Williamson | f621eb1 | 2022-03-15 11:29:57 -0600 | [diff] [blame] | 108 | vfio-pci-device-specific-driver-acceptance |
Mauro Carvalho Chehab | fb8c532 | 2019-06-13 14:40:42 -0300 | [diff] [blame] | 109 | xilinx/index |
Mauro Carvalho Chehab | baa293e | 2019-06-27 15:39:22 -0300 | [diff] [blame] | 110 | xillybus |
| 111 | zorro |
Jonathan Corbet | 9c73e1e | 2022-06-06 08:40:55 -0600 | [diff] [blame] | 112 | hte/index |
Markus Heiser | 241a802 | 2016-10-26 08:23:15 +0200 | [diff] [blame] | 113 | |
| 114 | .. only:: subproject and html |
| 115 | |
| 116 | Indices |
| 117 | ======= |
| 118 | |
| 119 | * :ref:`genindex` |