Commit | Line | Data |
---|---|---|
2fa91d15 JN |
1 | ============================= |
2 | Mode Setting Helper Functions | |
3 | ============================= | |
4 | ||
bcb32b69 DV |
5 | The DRM subsystem aims for a strong separation between core code and helper |
6 | libraries. Core code takes care of general setup and teardown and decoding | |
7 | userspace requests to kernel internal objects. Everything else is handled by a | |
8 | large set of helper libraries, which can be combined freely to pick and choose | |
9 | for each driver what fits, and avoid shared code where special behaviour is | |
10 | needed. | |
11 | ||
12 | This distinction between core code and helpers is especially strong in the | |
13 | modesetting code, where there's a shared userspace ABI for all drivers. This is | |
14 | in contrast to the render side, where pretty much everything (with very few | |
15 | exceptions) can be considered optional helper code. | |
16 | ||
17 | There are a few areas these helpers can grouped into: | |
18 | ||
19 | * Helpers to implement modesetting. The important ones here are the atomic | |
20 | helpers. Old drivers still often use the legacy CRTC helpers. They both share | |
21 | the same set of common helper vtables. For really simple drivers (anything | |
22 | that would have been a great fit in the deprecated fbdev subsystem) there's | |
23 | also the simple display pipe helpers. | |
24 | ||
25 | * There's a big pile of helpers for handling outputs. First the generic bridge | |
26 | helpers for handling encoder and transcoder IP blocks. Second the panel helpers | |
27 | for handling panel-related information and logic. Plus then a big set of | |
28 | helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally | |
29 | there's also generic helpers for handling output probing, and for dealing with | |
30 | EDIDs. | |
31 | ||
32 | * The last group of helpers concerns itself with the frontend side of a display | |
33 | pipeline: Planes, handling rectangles for visibility checking and scissoring, | |
34 | flip queues and assorted bits. | |
35 | ||
36 | Modeset Helper Reference for Common Vtables | |
37 | =========================================== | |
38 | ||
39 | .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h | |
40 | :internal: | |
41 | ||
42 | .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h | |
43 | :doc: overview | |
2fa91d15 JN |
44 | |
45 | Atomic Modeset Helper Functions Reference | |
46 | ========================================= | |
47 | ||
48 | Overview | |
49 | -------- | |
50 | ||
51 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | |
52 | :doc: overview | |
53 | ||
54 | Implementing Asynchronous Atomic Commit | |
55 | --------------------------------------- | |
56 | ||
57 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | |
58 | :doc: implementing nonblocking commit | |
59 | ||
60 | Atomic State Reset and Initialization | |
61 | ------------------------------------- | |
62 | ||
63 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | |
64 | :doc: atomic state reset and initialization | |
65 | ||
66 | .. kernel-doc:: include/drm/drm_atomic_helper.h | |
67 | :internal: | |
68 | ||
69 | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | |
70 | :export: | |
71 | ||
2fa91d15 JN |
72 | Legacy CRTC/Modeset Helper Functions Reference |
73 | ============================================== | |
74 | ||
75 | .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c | |
bcb32b69 | 76 | :doc: overview |
2fa91d15 JN |
77 | |
78 | .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c | |
bcb32b69 | 79 | :export: |
2fa91d15 | 80 | |
bcb32b69 DV |
81 | Simple KMS Helper Reference |
82 | =========================== | |
2fa91d15 | 83 | |
bcb32b69 DV |
84 | .. kernel-doc:: include/drm/drm_simple_kms_helper.h |
85 | :internal: | |
2fa91d15 | 86 | |
bcb32b69 | 87 | .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c |
2fa91d15 JN |
88 | :export: |
89 | ||
bcb32b69 DV |
90 | .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c |
91 | :doc: overview | |
92 | ||
2fa91d15 JN |
93 | fbdev Helper Functions Reference |
94 | ================================ | |
95 | ||
96 | .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c | |
97 | :doc: fbdev helpers | |
98 | ||
99 | .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c | |
100 | :export: | |
101 | ||
102 | .. kernel-doc:: include/drm/drm_fb_helper.h | |
103 | :internal: | |
104 | ||
105 | Framebuffer CMA Helper Functions Reference | |
106 | ========================================== | |
107 | ||
108 | .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c | |
109 | :doc: framebuffer cma helper functions | |
110 | ||
111 | .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c | |
112 | :export: | |
113 | ||
bcb32b69 DV |
114 | Bridges |
115 | ======= | |
116 | ||
117 | Overview | |
118 | -------- | |
119 | ||
120 | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | |
121 | :doc: overview | |
122 | ||
123 | Default bridge callback sequence | |
124 | -------------------------------- | |
125 | ||
126 | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | |
127 | :doc: bridge callbacks | |
128 | ||
129 | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | |
130 | :export: | |
131 | ||
132 | Panel Helper Reference | |
133 | ====================== | |
134 | ||
135 | .. kernel-doc:: include/drm/drm_panel.h | |
136 | :internal: | |
137 | ||
138 | .. kernel-doc:: drivers/gpu/drm/drm_panel.c | |
139 | :export: | |
140 | ||
141 | .. kernel-doc:: drivers/gpu/drm/drm_panel.c | |
142 | :doc: drm panel | |
143 | ||
2fa91d15 JN |
144 | Display Port Helper Functions Reference |
145 | ======================================= | |
146 | ||
147 | .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c | |
148 | :doc: dp helpers | |
149 | ||
150 | .. kernel-doc:: include/drm/drm_dp_helper.h | |
151 | :internal: | |
152 | ||
153 | .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c | |
154 | :export: | |
155 | ||
156 | Display Port Dual Mode Adaptor Helper Functions Reference | |
157 | ========================================================= | |
158 | ||
159 | .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c | |
160 | :doc: dp dual mode helpers | |
161 | ||
162 | .. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h | |
163 | :internal: | |
164 | ||
165 | .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c | |
166 | :export: | |
167 | ||
168 | Display Port MST Helper Functions Reference | |
169 | =========================================== | |
170 | ||
171 | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | |
172 | :doc: dp mst helper | |
173 | ||
174 | .. kernel-doc:: include/drm/drm_dp_mst_helper.h | |
175 | :internal: | |
176 | ||
177 | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | |
178 | :export: | |
179 | ||
180 | MIPI DSI Helper Functions Reference | |
181 | =================================== | |
182 | ||
183 | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c | |
184 | :doc: dsi helpers | |
185 | ||
186 | .. kernel-doc:: include/drm/drm_mipi_dsi.h | |
187 | :internal: | |
188 | ||
189 | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c | |
190 | :export: | |
191 | ||
bcb32b69 DV |
192 | Output Probing Helper Functions Reference |
193 | ========================================= | |
194 | ||
195 | .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c | |
196 | :doc: output probing helper overview | |
197 | ||
198 | .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c | |
199 | :export: | |
200 | ||
2fa91d15 JN |
201 | EDID Helper Functions Reference |
202 | =============================== | |
203 | ||
204 | .. kernel-doc:: drivers/gpu/drm/drm_edid.c | |
205 | :export: | |
206 | ||
207 | Rectangle Utilities Reference | |
208 | ============================= | |
209 | ||
210 | .. kernel-doc:: include/drm/drm_rect.h | |
211 | :doc: rect utils | |
212 | ||
213 | .. kernel-doc:: include/drm/drm_rect.h | |
214 | :internal: | |
215 | ||
216 | .. kernel-doc:: drivers/gpu/drm/drm_rect.c | |
217 | :export: | |
218 | ||
2fa91d15 JN |
219 | HDMI Infoframes Helper Reference |
220 | ================================ | |
221 | ||
222 | Strictly speaking this is not a DRM helper library but generally useable | |
223 | by any driver interfacing with HDMI outputs like v4l or alsa drivers. | |
224 | But it nicely fits into the overall topic of mode setting helper | |
225 | libraries and hence is also included here. | |
226 | ||
227 | .. kernel-doc:: include/linux/hdmi.h | |
228 | :internal: | |
229 | ||
230 | .. kernel-doc:: drivers/video/hdmi.c | |
231 | :export: | |
232 | ||
bcb32b69 DV |
233 | Flip-work Helper Reference |
234 | ========================== | |
2fa91d15 | 235 | |
bcb32b69 DV |
236 | .. kernel-doc:: include/drm/drm_flip_work.h |
237 | :doc: flip utils | |
2fa91d15 | 238 | |
bcb32b69 DV |
239 | .. kernel-doc:: include/drm/drm_flip_work.h |
240 | :internal: | |
2fa91d15 | 241 | |
bcb32b69 | 242 | .. kernel-doc:: drivers/gpu/drm/drm_flip_work.c |
2fa91d15 JN |
243 | :export: |
244 | ||
bcb32b69 | 245 | Plane Helper Reference |
2fa91d15 JN |
246 | ====================== |
247 | ||
bcb32b69 DV |
248 | .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c |
249 | :doc: overview | |
2fa91d15 | 250 | |
bcb32b69 | 251 | .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c |
2fa91d15 JN |
252 | :export: |
253 | ||
bcb32b69 DV |
254 | Tile group |
255 | ========== | |
2fa91d15 | 256 | |
bcb32b69 | 257 | # FIXME: This should probably be moved into a property documentation section |
2fa91d15 | 258 | |
bcb32b69 DV |
259 | .. kernel-doc:: drivers/gpu/drm/drm_crtc.c |
260 | :doc: Tile group | |
1de72faf DV |
261 | |
262 | Auxiliary Modeset Helpers | |
263 | ========================= | |
264 | ||
265 | .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c | |
266 | :doc: aux kms helpers | |
267 | ||
268 | .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c | |
269 | :export: |