xref: /linux/Documentation/gpu/drm-kms-helpers.rst (revision f6e8dc9edf963dbc99085e54f6ced6da9daa6100)
1=============================
2Mode Setting Helper Functions
3=============================
4
5The DRM subsystem aims for a strong separation between core code and helper
6libraries. Core code takes care of general setup and teardown and decoding
7userspace requests to kernel internal objects. Everything else is handled by a
8large set of helper libraries, which can be combined freely to pick and choose
9for each driver what fits, and avoid shared code where special behaviour is
10needed.
11
12This distinction between core code and helpers is especially strong in the
13modesetting code, where there's a shared userspace ABI for all drivers. This is
14in contrast to the render side, where pretty much everything (with very few
15exceptions) can be considered optional helper code.
16
17There 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
36Modeset Helper Reference for Common Vtables
37===========================================
38
39.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
40   :doc: overview
41
42.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
43   :internal:
44
45.. _drm_atomic_helper:
46
47Atomic Modeset Helper Functions Reference
48=========================================
49
50Overview
51--------
52
53.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
54   :doc: overview
55
56Implementing Asynchronous Atomic Commit
57---------------------------------------
58
59.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
60   :doc: implementing nonblocking commit
61
62Helper Functions Reference
63--------------------------
64
65.. kernel-doc:: include/drm/drm_atomic_helper.h
66   :internal:
67
68.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
69   :export:
70
71Atomic State Reset and Initialization
72-------------------------------------
73
74.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
75   :doc: atomic state reset and initialization
76
77Atomic State Helper Reference
78-----------------------------
79
80.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
81   :export:
82
83GEM Atomic Helper Reference
84---------------------------
85
86.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
87   :doc: overview
88
89.. kernel-doc:: include/drm/drm_gem_atomic_helper.h
90   :internal:
91
92.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
93   :export:
94
95VBLANK Helper Reference
96-----------------------
97
98.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
99   :doc: overview
100
101.. kernel-doc:: include/drm/drm_vblank_helper.h
102   :internal:
103
104.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c
105   :export:
106
107Simple KMS Helper Reference
108===========================
109
110.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
111   :doc: overview
112
113.. kernel-doc:: include/drm/drm_simple_kms_helper.h
114   :internal:
115
116.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
117   :export:
118
119fbdev Helper Functions Reference
120================================
121
122.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
123   :doc: fbdev helpers
124
125.. kernel-doc:: include/drm/drm_fb_helper.h
126   :internal:
127
128.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
129   :export:
130
131format Helper Functions Reference
132=================================
133
134.. kernel-doc:: drivers/gpu/drm/drm_format_helper.c
135   :export:
136
137Framebuffer DMA Helper Functions Reference
138==========================================
139
140.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
141   :doc: framebuffer dma helper functions
142
143.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c
144   :export:
145
146Framebuffer GEM Helper Reference
147================================
148
149.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
150   :doc: overview
151
152.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
153   :export:
154
155.. _drm_bridges:
156
157Bridges
158=======
159
160Overview
161--------
162
163.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
164   :doc: overview
165
166Display Driver Integration
167--------------------------
168
169.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
170   :doc: display driver integration
171
172Special Care with MIPI-DSI bridges
173----------------------------------
174
175.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
176   :doc: special care dsi
177
178Bridge Operations
179-----------------
180
181.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
182   :doc: bridge operations
183
184Bridge Connector Helper
185-----------------------
186
187.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
188   :doc: overview
189
190
191Bridge Helper Reference
192-------------------------
193
194.. kernel-doc:: include/drm/drm_bridge.h
195   :internal:
196
197.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
198   :export:
199
200MIPI-DSI bridge operation
201-------------------------
202
203.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
204   :doc: dsi bridge operations
205
206
207Bridge Connector Helper Reference
208---------------------------------
209
210.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c
211   :export:
212
213Panel-Bridge Helper Reference
214-----------------------------
215
216.. kernel-doc:: drivers/gpu/drm/bridge/panel.c
217   :export:
218
219.. _drm_panel_helper:
220
221Panel Helper Reference
222======================
223
224.. kernel-doc:: drivers/gpu/drm/drm_panel.c
225   :doc: drm panel
226
227.. kernel-doc:: include/drm/drm_panel.h
228   :internal:
229
230.. kernel-doc:: drivers/gpu/drm/drm_panel.c
231   :export:
232
233.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c
234   :export:
235
236.. kernel-doc:: drivers/gpu/drm/drm_panel_backlight_quirks.c
237   :export:
238
239Panel Self Refresh Helper Reference
240===================================
241
242.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
243   :doc: overview
244
245.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
246   :export:
247
248HDMI Atomic State Helpers
249=========================
250
251Overview
252--------
253
254.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
255   :doc: hdmi helpers
256
257Functions Reference
258-------------------
259
260.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c
261   :export:
262
263HDCP Helper Functions Reference
264===============================
265
266.. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c
267   :export:
268
269Display Port Helper Functions Reference
270=======================================
271
272.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
273   :doc: dp helpers
274
275.. kernel-doc:: include/drm/display/drm_dp.h
276   :internal:
277
278.. kernel-doc:: include/drm/display/drm_dp_helper.h
279   :internal:
280
281.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
282   :export:
283
284Display Port CEC Helper Functions Reference
285===========================================
286
287.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
288   :doc: dp cec helpers
289
290.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
291   :export:
292
293Display Port Dual Mode Adaptor Helper Functions Reference
294=========================================================
295
296.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
297   :doc: dp dual mode helpers
298
299.. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h
300   :internal:
301
302.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
303   :export:
304
305Display Port MST Helpers
306========================
307
308Overview
309--------
310
311.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
312   :doc: dp mst helper
313
314.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
315   :doc: Branch device and port refcounting
316
317Functions Reference
318-------------------
319
320.. kernel-doc:: include/drm/display/drm_dp_mst_helper.h
321   :internal:
322
323.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
324   :export:
325
326Topology Lifetime Internals
327---------------------------
328
329These functions aren't exported to drivers, but are documented here to help make
330the MST topology helpers easier to understand
331
332.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
333   :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
334               drm_dp_mst_topology_put_mstb
335               drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
336               drm_dp_mst_topology_put_port
337               drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc
338
339MIPI DBI Helper Functions Reference
340===================================
341
342.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
343   :doc: overview
344
345.. kernel-doc:: include/drm/drm_mipi_dbi.h
346   :internal:
347
348.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
349   :export:
350
351MIPI DSI Helper Functions Reference
352===================================
353
354.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
355   :doc: dsi helpers
356
357.. kernel-doc:: include/drm/drm_mipi_dsi.h
358   :internal:
359
360.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
361   :export:
362
363Display Stream Compression Helper Functions Reference
364=====================================================
365
366.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
367   :doc: dsc helpers
368
369.. kernel-doc:: include/drm/display/drm_dsc.h
370   :internal:
371
372.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
373   :export:
374
375Output Probing Helper Functions Reference
376=========================================
377
378.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
379   :doc: output probing helper overview
380
381.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
382   :export:
383
384EDID Helper Functions Reference
385===============================
386
387.. kernel-doc:: include/drm/drm_edid.h
388   :internal:
389
390.. kernel-doc:: drivers/gpu/drm/drm_edid.c
391   :export:
392
393.. kernel-doc:: include/drm/drm_eld.h
394   :internal:
395
396.. kernel-doc:: drivers/gpu/drm/drm_eld.c
397   :export:
398
399SCDC Helper Functions Reference
400===============================
401
402.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
403   :doc: scdc helpers
404
405.. kernel-doc:: include/drm/display/drm_scdc_helper.h
406   :internal:
407
408.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
409   :export:
410
411HDMI Infoframes Helper Reference
412================================
413
414Strictly speaking this is not a DRM helper library but generally usable
415by any driver interfacing with HDMI outputs like v4l or alsa drivers.
416But it nicely fits into the overall topic of mode setting helper
417libraries and hence is also included here.
418
419.. kernel-doc:: include/linux/hdmi.h
420   :internal:
421
422.. kernel-doc:: drivers/video/hdmi.c
423   :export:
424
425Rectangle Utilities Reference
426=============================
427
428.. kernel-doc:: include/drm/drm_rect.h
429   :doc: rect utils
430
431.. kernel-doc:: include/drm/drm_rect.h
432   :internal:
433
434.. kernel-doc:: drivers/gpu/drm/drm_rect.c
435   :export:
436
437Flip-work Helper Reference
438==========================
439
440.. kernel-doc:: include/drm/drm_flip_work.h
441   :doc: flip utils
442
443.. kernel-doc:: include/drm/drm_flip_work.h
444   :internal:
445
446.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
447   :export:
448
449Auxiliary Modeset Helpers
450=========================
451
452.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
453   :doc: aux kms helpers
454
455.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
456   :export:
457
458OF/DT Helpers
459=============
460
461.. kernel-doc:: drivers/gpu/drm/drm_of.c
462   :doc: overview
463
464.. kernel-doc:: drivers/gpu/drm/drm_of.c
465   :export:
466
467Legacy Plane Helper Reference
468=============================
469
470.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
471   :doc: overview
472
473.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
474   :export:
475
476Legacy CRTC/Modeset Helper Functions Reference
477==============================================
478
479.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
480   :doc: overview
481
482.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
483   :export:
484
485Privacy-screen class
486====================
487
488.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
489   :doc: overview
490
491.. kernel-doc:: include/drm/drm_privacy_screen_driver.h
492   :internal:
493
494.. kernel-doc:: include/drm/drm_privacy_screen_machine.h
495   :internal:
496
497.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
498   :export:
499