blob: 012b6ff3ec3fb741afefa7d62d4f7c6fe601078e [file] [log] [blame]
Jani Nikula2fa91d12016-06-21 14:49:02 +03001=============================
2Mode Setting Helper Functions
3=============================
4
Daniel Vetterbcb32b62016-08-12 22:48:38 +02005The 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.
Jani Nikula2fa91d12016-06-21 14:49:02 +030011
Daniel Vetterbcb32b62016-08-12 22:48:38 +020012This 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.
Jani Nikula2fa91d12016-06-21 14:49:02 +030016
Daniel Vetterbcb32b62016-08-12 22:48:38 +020017There are a few areas these helpers can grouped into:
Jani Nikula2fa91d12016-06-21 14:49:02 +030018
Daniel Vetterbcb32b62016-08-12 22:48:38 +020019* 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 :internal:
41
42.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
43 :doc: overview
Jani Nikula2fa91d12016-06-21 14:49:02 +030044
45Atomic Modeset Helper Functions Reference
46=========================================
47
48Overview
49--------
50
51.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
52 :doc: overview
53
54Implementing Asynchronous Atomic Commit
55---------------------------------------
56
57.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
58 :doc: implementing nonblocking commit
59
60Atomic State Reset and Initialization
61-------------------------------------
62
63.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
64 :doc: atomic state reset and initialization
65
Daniel Vetter1ea0c022016-11-21 18:18:02 +010066Helper Functions Reference
67--------------------------
68
Jani Nikula2fa91d12016-06-21 14:49:02 +030069.. kernel-doc:: include/drm/drm_atomic_helper.h
70 :internal:
71
72.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
73 :export:
74
Jani Nikula2fa91d12016-06-21 14:49:02 +030075Legacy CRTC/Modeset Helper Functions Reference
76==============================================
77
78.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
Jani Nikula2fa91d12016-06-21 14:49:02 +030079 :doc: overview
80
Daniel Vetterbcb32b62016-08-12 22:48:38 +020081.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
Jani Nikula2fa91d12016-06-21 14:49:02 +030082 :export:
83
Daniel Vetterbcb32b62016-08-12 22:48:38 +020084Simple KMS Helper Reference
85===========================
86
87.. kernel-doc:: include/drm/drm_simple_kms_helper.h
88 :internal:
89
90.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
91 :export:
92
93.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
94 :doc: overview
95
Jani Nikula2fa91d12016-06-21 14:49:02 +030096fbdev Helper Functions Reference
97================================
98
99.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
100 :doc: fbdev helpers
101
102.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
103 :export:
104
105.. kernel-doc:: include/drm/drm_fb_helper.h
106 :internal:
107
108Framebuffer CMA Helper Functions Reference
109==========================================
110
111.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
112 :doc: framebuffer cma helper functions
113
114.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
115 :export:
116
Daniel Vetter2564d0b2017-03-02 16:16:35 +0100117.. _drm_bridges:
118
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200119Bridges
120=======
121
122Overview
123--------
124
125.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
126 :doc: overview
127
128Default bridge callback sequence
129--------------------------------
130
131.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
132 :doc: bridge callbacks
133
Daniel Vetter199e4e92016-08-31 18:09:05 +0200134
135Bridge Helper Reference
136-------------------------
137
138.. kernel-doc:: include/drm/drm_bridge.h
139 :internal:
140
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200141.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
142 :export:
143
Daniel Vetter2564d0b2017-03-02 16:16:35 +0100144.. _drm_panel_helper:
145
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200146Panel Helper Reference
147======================
148
149.. kernel-doc:: include/drm/drm_panel.h
150 :internal:
151
152.. kernel-doc:: drivers/gpu/drm/drm_panel.c
153 :export:
154
155.. kernel-doc:: drivers/gpu/drm/drm_panel.c
156 :doc: drm panel
157
Jani Nikula2fa91d12016-06-21 14:49:02 +0300158Display Port Helper Functions Reference
159=======================================
160
161.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
162 :doc: dp helpers
163
164.. kernel-doc:: include/drm/drm_dp_helper.h
165 :internal:
166
167.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
168 :export:
169
170Display Port Dual Mode Adaptor Helper Functions Reference
171=========================================================
172
173.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
174 :doc: dp dual mode helpers
175
176.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h
177 :internal:
178
179.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
180 :export:
181
182Display Port MST Helper Functions Reference
183===========================================
184
185.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
186 :doc: dp mst helper
187
188.. kernel-doc:: include/drm/drm_dp_mst_helper.h
189 :internal:
190
191.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
192 :export:
193
194MIPI DSI Helper Functions Reference
195===================================
196
197.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
198 :doc: dsi helpers
199
200.. kernel-doc:: include/drm/drm_mipi_dsi.h
201 :internal:
202
203.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
204 :export:
205
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200206Output Probing Helper Functions Reference
207=========================================
208
209.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
210 :doc: output probing helper overview
211
212.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
213 :export:
214
Jani Nikula2fa91d12016-06-21 14:49:02 +0300215EDID Helper Functions Reference
216===============================
217
Daniel Vettercdc3d092016-08-31 18:09:06 +0200218.. kernel-doc:: include/drm/drm_edid.h
219 :internal:
220
Jani Nikula2fa91d12016-06-21 14:49:02 +0300221.. kernel-doc:: drivers/gpu/drm/drm_edid.c
222 :export:
223
224Rectangle Utilities Reference
225=============================
226
227.. kernel-doc:: include/drm/drm_rect.h
228 :doc: rect utils
229
230.. kernel-doc:: include/drm/drm_rect.h
231 :internal:
232
233.. kernel-doc:: drivers/gpu/drm/drm_rect.c
234 :export:
235
Jani Nikula2fa91d12016-06-21 14:49:02 +0300236HDMI Infoframes Helper Reference
237================================
238
239Strictly speaking this is not a DRM helper library but generally useable
240by any driver interfacing with HDMI outputs like v4l or alsa drivers.
241But it nicely fits into the overall topic of mode setting helper
242libraries and hence is also included here.
243
244.. kernel-doc:: include/linux/hdmi.h
245 :internal:
246
247.. kernel-doc:: drivers/video/hdmi.c
248 :export:
249
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200250Flip-work Helper Reference
251==========================
252
253.. kernel-doc:: include/drm/drm_flip_work.h
254 :doc: flip utils
255
256.. kernel-doc:: include/drm/drm_flip_work.h
257 :internal:
258
259.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
260 :export:
261
Jani Nikula2fa91d12016-06-21 14:49:02 +0300262Plane Helper Reference
263======================
264
265.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
Jani Nikula2fa91d12016-06-21 14:49:02 +0300266 :doc: overview
267
Daniel Vetterbcb32b62016-08-12 22:48:38 +0200268.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
269 :export:
270
Daniel Vetter1de72fa2016-08-12 22:48:39 +0200271Auxiliary Modeset Helpers
272=========================
273
274.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
275 :doc: aux kms helpers
276
277.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
278 :export: