blob: 5d50d6733db3b7d15c13678bda76687f137038a7 [file] [log] [blame]
Jonathan Corbetdcec3c82016-08-20 13:17:32 -06001Device drivers infrastructure
2=============================
3
4The Basic Device Driver-Model Structures
5----------------------------------------
6
7.. kernel-doc:: include/linux/device.h
8 :internal:
9
10Device 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
49Buffer Sharing and Synchronization
50----------------------------------
51
52The dma-buf subsystem provides the framework for sharing buffers for
53hardware (DMA) access across multiple device drivers and subsystems, and
54for synchronizing asynchronous hardware access.
55
56This is used, for example, by drm "prime" multi-GPU support, but is of
57course not limited to GPU use cases.
58
59The three main components of this are: (1) dma-buf, representing a
60sg_table and exposed to userspace as a file descriptor to allow passing
61between devices, (2) fence, which provides a mechanism to signal when
62one device as finished access, and (3) reservation, which manages the
63shared or exclusive fence(s) associated with the buffer.
64
65dma-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
74reservation
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
86fence
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
119Device 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
128Device Drivers Power Management
129-------------------------------
130
131.. kernel-doc:: drivers/base/power/main.c
132 :export:
133
134Device 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
143Device 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
161Userspace 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