Merge tag 'tegra-for-4.8-i2c' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra...
[cascardo/linux.git] / Documentation / driver-api / infrastructure.rst
1 Device drivers infrastructure
2 =============================
3
4 The Basic Device Driver-Model Structures
5 ----------------------------------------
6
7 .. kernel-doc:: include/linux/device.h
8    :internal:
9
10 Device Drivers Base
11 -------------------
12
13 .. kernel-doc:: drivers/base/init.c
14    :internal:
15
16 .. kernel-doc:: drivers/base/driver.c
17    :export:
18
19 .. kernel-doc:: drivers/base/core.c
20    :export:
21
22 .. kernel-doc:: drivers/base/syscore.c
23    :export:
24
25 .. kernel-doc:: drivers/base/class.c
26    :export:
27
28 .. kernel-doc:: drivers/base/node.c
29    :internal:
30
31 .. kernel-doc:: drivers/base/firmware_class.c
32    :export:
33
34 .. kernel-doc:: drivers/base/transport_class.c
35    :export:
36
37 .. kernel-doc:: drivers/base/dd.c
38    :export:
39
40 .. kernel-doc:: include/linux/platform_device.h
41    :internal:
42
43 .. kernel-doc:: drivers/base/platform.c
44    :export:
45
46 .. kernel-doc:: drivers/base/bus.c
47    :export:
48
49 Buffer Sharing and Synchronization
50 ----------------------------------
51
52 The dma-buf subsystem provides the framework for sharing buffers for
53 hardware (DMA) access across multiple device drivers and subsystems, and
54 for synchronizing asynchronous hardware access.
55
56 This is used, for example, by drm "prime" multi-GPU support, but is of
57 course not limited to GPU use cases.
58
59 The three main components of this are: (1) dma-buf, representing a
60 sg_table and exposed to userspace as a file descriptor to allow passing
61 between devices, (2) fence, which provides a mechanism to signal when
62 one device as finished access, and (3) reservation, which manages the
63 shared or exclusive fence(s) associated with the buffer.
64
65 dma-buf
66 ~~~~~~~
67
68 .. kernel-doc:: drivers/dma-buf/dma-buf.c
69    :export:
70
71 .. kernel-doc:: include/linux/dma-buf.h
72    :internal:
73
74 reservation
75 ~~~~~~~~~~~
76
77 .. kernel-doc:: drivers/dma-buf/reservation.c
78    :doc: Reservation Object Overview
79
80 .. kernel-doc:: drivers/dma-buf/reservation.c
81    :export:
82
83 .. kernel-doc:: include/linux/reservation.h
84    :internal:
85
86 fence
87 ~~~~~
88
89 .. kernel-doc:: drivers/dma-buf/fence.c
90    :export:
91
92 .. kernel-doc:: include/linux/fence.h
93    :internal:
94
95 .. kernel-doc:: drivers/dma-buf/seqno-fence.c
96    :export:
97
98 .. kernel-doc:: include/linux/seqno-fence.h
99    :internal:
100
101 .. kernel-doc:: drivers/dma-buf/fence-array.c
102    :export:
103
104 .. kernel-doc:: include/linux/fence-array.h
105    :internal:
106
107 .. kernel-doc:: drivers/dma-buf/reservation.c
108    :export:
109
110 .. kernel-doc:: include/linux/reservation.h
111    :internal:
112
113 .. kernel-doc:: drivers/dma-buf/sync_file.c
114    :export:
115
116 .. kernel-doc:: include/linux/sync_file.h
117    :internal:
118
119 Device Drivers DMA Management
120 -----------------------------
121
122 .. kernel-doc:: drivers/base/dma-coherent.c
123    :export:
124
125 .. kernel-doc:: drivers/base/dma-mapping.c
126    :export:
127
128 Device Drivers Power Management
129 -------------------------------
130
131 .. kernel-doc:: drivers/base/power/main.c
132    :export:
133
134 Device Drivers ACPI Support
135 ---------------------------
136
137 .. kernel-doc:: drivers/acpi/scan.c
138    :export:
139
140 .. kernel-doc:: drivers/acpi/scan.c
141    :internal:
142
143 Device drivers PnP support
144 --------------------------
145
146 .. kernel-doc:: drivers/pnp/core.c
147    :internal:
148
149 .. kernel-doc:: drivers/pnp/card.c
150    :export:
151
152 .. kernel-doc:: drivers/pnp/driver.c
153    :internal:
154
155 .. kernel-doc:: drivers/pnp/manager.c
156    :export:
157
158 .. kernel-doc:: drivers/pnp/support.c
159    :export:
160
161 Userspace IO devices
162 --------------------
163
164 .. kernel-doc:: drivers/uio/uio.c
165    :export:
166
167 .. kernel-doc:: include/linux/uio_driver.h
168    :internal:
169