1 =============================
2 Mode Setting Helper Functions
3 =============================
5 The plane, CRTC, encoder and connector functions provided by the drivers
6 implement the DRM API. They're called by the DRM core and ioctl handlers
7 to handle device state changes and configuration request. As
8 implementing those functions often requires logic not specific to
9 drivers, mid-layer helper functions are available to avoid duplicating
12 The DRM core contains one mid-layer implementation. The mid-layer
13 provides implementations of several plane, CRTC, encoder and connector
14 functions (called from the top of the mid-layer) that pre-process
15 requests and call lower-level functions provided by the driver (at the
16 bottom of the mid-layer). For instance, the
17 :c:func:`drm_crtc_helper_set_config()` function can be used to
18 fill the :c:type:`struct drm_crtc_funcs <drm_crtc_funcs>`
19 set_config field. When called, it will split the set_config operation
20 in smaller, simpler operations and call the driver to handle them.
22 To use the mid-layer, drivers call
23 :c:func:`drm_crtc_helper_add()`,
24 :c:func:`drm_encoder_helper_add()` and
25 :c:func:`drm_connector_helper_add()` functions to install their
26 mid-layer bottom operations handlers, and fill the :c:type:`struct
27 drm_crtc_funcs <drm_crtc_funcs>`, :c:type:`struct
28 drm_encoder_funcs <drm_encoder_funcs>` and :c:type:`struct
29 drm_connector_funcs <drm_connector_funcs>` structures with
30 pointers to the mid-layer top API functions. Installing the mid-layer
31 bottom operation handlers is best done right after registering the
32 corresponding KMS object.
34 The mid-layer is not split between CRTC, encoder and connector
35 operations. To use it, a driver must provide bottom functions for all of
36 the three KMS entities.
38 Atomic Modeset Helper Functions Reference
39 =========================================
44 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
47 Implementing Asynchronous Atomic Commit
48 ---------------------------------------
50 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
51 :doc: implementing nonblocking commit
53 Atomic State Reset and Initialization
54 -------------------------------------
56 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
57 :doc: atomic state reset and initialization
59 .. kernel-doc:: include/drm/drm_atomic_helper.h
62 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
65 Modeset Helper Reference for Common Vtables
66 ===========================================
68 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
71 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
74 Legacy CRTC/Modeset Helper Functions Reference
75 ==============================================
77 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
80 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
83 Output Probing Helper Functions Reference
84 =========================================
86 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
87 :doc: output probing helper overview
89 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
92 fbdev Helper Functions Reference
93 ================================
95 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
98 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
101 .. kernel-doc:: include/drm/drm_fb_helper.h
104 Framebuffer CMA Helper Functions Reference
105 ==========================================
107 .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
108 :doc: framebuffer cma helper functions
110 .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
113 Display Port Helper Functions Reference
114 =======================================
116 .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
119 .. kernel-doc:: include/drm/drm_dp_helper.h
122 .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
125 Display Port Dual Mode Adaptor Helper Functions Reference
126 =========================================================
128 .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
129 :doc: dp dual mode helpers
131 .. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h
134 .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
137 Display Port MST Helper Functions Reference
138 ===========================================
140 .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
143 .. kernel-doc:: include/drm/drm_dp_mst_helper.h
146 .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
149 MIPI DSI Helper Functions Reference
150 ===================================
152 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
155 .. kernel-doc:: include/drm/drm_mipi_dsi.h
158 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
161 EDID Helper Functions Reference
162 ===============================
164 .. kernel-doc:: drivers/gpu/drm/drm_edid.c
167 Rectangle Utilities Reference
168 =============================
170 .. kernel-doc:: include/drm/drm_rect.h
173 .. kernel-doc:: include/drm/drm_rect.h
176 .. kernel-doc:: drivers/gpu/drm/drm_rect.c
179 Flip-work Helper Reference
180 ==========================
182 .. kernel-doc:: include/drm/drm_flip_work.h
185 .. kernel-doc:: include/drm/drm_flip_work.h
188 .. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
191 HDMI Infoframes Helper Reference
192 ================================
194 Strictly speaking this is not a DRM helper library but generally useable
195 by any driver interfacing with HDMI outputs like v4l or alsa drivers.
196 But it nicely fits into the overall topic of mode setting helper
197 libraries and hence is also included here.
199 .. kernel-doc:: include/linux/hdmi.h
202 .. kernel-doc:: drivers/video/hdmi.c
205 Plane Helper Reference
206 ======================
208 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
211 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
217 .. kernel-doc:: drivers/gpu/drm/drm_crtc.c
226 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
229 Default bridge callback sequence
230 --------------------------------
232 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
233 :doc: bridge callbacks
235 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
238 Panel Helper Reference
239 ======================
241 .. kernel-doc:: include/drm/drm_panel.h
244 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
247 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
250 Simple KMS Helper Reference
251 ===========================
253 .. kernel-doc:: include/drm/drm_simple_kms_helper.h
256 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
259 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c