0001 =============================
0002 Mode Setting Helper Functions
0003 =============================
0004
0005 The DRM subsystem aims for a strong separation between core code and helper
0006 libraries. Core code takes care of general setup and teardown and decoding
0007 userspace requests to kernel internal objects. Everything else is handled by a
0008 large set of helper libraries, which can be combined freely to pick and choose
0009 for each driver what fits, and avoid shared code where special behaviour is
0010 needed.
0011
0012 This distinction between core code and helpers is especially strong in the
0013 modesetting code, where there's a shared userspace ABI for all drivers. This is
0014 in contrast to the render side, where pretty much everything (with very few
0015 exceptions) can be considered optional helper code.
0016
0017 There are a few areas these helpers can grouped into:
0018
0019 * Helpers to implement modesetting. The important ones here are the atomic
0020 helpers. Old drivers still often use the legacy CRTC helpers. They both share
0021 the same set of common helper vtables. For really simple drivers (anything
0022 that would have been a great fit in the deprecated fbdev subsystem) there's
0023 also the simple display pipe helpers.
0024
0025 * There's a big pile of helpers for handling outputs. First the generic bridge
0026 helpers for handling encoder and transcoder IP blocks. Second the panel helpers
0027 for handling panel-related information and logic. Plus then a big set of
0028 helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally
0029 there's also generic helpers for handling output probing, and for dealing with
0030 EDIDs.
0031
0032 * The last group of helpers concerns itself with the frontend side of a display
0033 pipeline: Planes, handling rectangles for visibility checking and scissoring,
0034 flip queues and assorted bits.
0035
0036 Modeset Helper Reference for Common Vtables
0037 ===========================================
0038
0039 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
0040 :doc: overview
0041
0042 .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
0043 :internal:
0044
0045 .. _drm_atomic_helper:
0046
0047 Atomic Modeset Helper Functions Reference
0048 =========================================
0049
0050 Overview
0051 --------
0052
0053 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
0054 :doc: overview
0055
0056 Implementing Asynchronous Atomic Commit
0057 ---------------------------------------
0058
0059 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
0060 :doc: implementing nonblocking commit
0061
0062 Helper Functions Reference
0063 --------------------------
0064
0065 .. kernel-doc:: include/drm/drm_atomic_helper.h
0066 :internal:
0067
0068 .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
0069 :export:
0070
0071 Atomic State Reset and Initialization
0072 -------------------------------------
0073
0074 .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
0075 :doc: atomic state reset and initialization
0076
0077 Atomic State Helper Reference
0078 -----------------------------
0079
0080 .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c
0081 :export:
0082
0083 GEM Atomic Helper Reference
0084 ---------------------------
0085
0086 .. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
0087 :doc: overview
0088
0089 .. kernel-doc:: include/drm/drm_gem_atomic_helper.h
0090 :internal:
0091
0092 .. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c
0093 :export:
0094
0095 Simple KMS Helper Reference
0096 ===========================
0097
0098 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
0099 :doc: overview
0100
0101 .. kernel-doc:: include/drm/drm_simple_kms_helper.h
0102 :internal:
0103
0104 .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
0105 :export:
0106
0107 fbdev Helper Functions Reference
0108 ================================
0109
0110 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
0111 :doc: fbdev helpers
0112
0113 .. kernel-doc:: include/drm/drm_fb_helper.h
0114 :internal:
0115
0116 .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
0117 :export:
0118
0119 format Helper Functions Reference
0120 =================================
0121
0122 .. kernel-doc:: drivers/gpu/drm/drm_format_helper.c
0123 :export:
0124
0125 Framebuffer CMA Helper Functions Reference
0126 ==========================================
0127
0128 .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
0129 :doc: framebuffer cma helper functions
0130
0131 .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
0132 :export:
0133
0134 Framebuffer GEM Helper Reference
0135 ================================
0136
0137 .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
0138 :doc: overview
0139
0140 .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
0141 :export:
0142
0143 .. _drm_bridges:
0144
0145 Bridges
0146 =======
0147
0148 Overview
0149 --------
0150
0151 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
0152 :doc: overview
0153
0154 Display Driver Integration
0155 --------------------------
0156
0157 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
0158 :doc: display driver integration
0159
0160 Special Care with MIPI-DSI bridges
0161 ----------------------------------
0162
0163 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
0164 :doc: special care dsi
0165
0166 Bridge Operations
0167 -----------------
0168
0169 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
0170 :doc: bridge operations
0171
0172 Bridge Connector Helper
0173 -----------------------
0174
0175 .. kernel-doc:: drivers/gpu/drm/drm_bridge_connector.c
0176 :doc: overview
0177
0178
0179 Bridge Helper Reference
0180 -------------------------
0181
0182 .. kernel-doc:: include/drm/drm_bridge.h
0183 :internal:
0184
0185 .. kernel-doc:: drivers/gpu/drm/drm_bridge.c
0186 :export:
0187
0188 Bridge Connector Helper Reference
0189 ---------------------------------
0190
0191 .. kernel-doc:: drivers/gpu/drm/drm_bridge_connector.c
0192 :export:
0193
0194 Panel-Bridge Helper Reference
0195 -----------------------------
0196
0197 .. kernel-doc:: drivers/gpu/drm/bridge/panel.c
0198 :export:
0199
0200 .. _drm_panel_helper:
0201
0202 Panel Helper Reference
0203 ======================
0204
0205 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
0206 :doc: drm panel
0207
0208 .. kernel-doc:: include/drm/drm_panel.h
0209 :internal:
0210
0211 .. kernel-doc:: drivers/gpu/drm/drm_panel.c
0212 :export:
0213
0214 .. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c
0215 :export:
0216
0217 Panel Self Refresh Helper Reference
0218 ===================================
0219
0220 .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
0221 :doc: overview
0222
0223 .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c
0224 :export:
0225
0226 HDCP Helper Functions Reference
0227 ===============================
0228
0229 .. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c
0230 :export:
0231
0232 Display Port Helper Functions Reference
0233 =======================================
0234
0235 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
0236 :doc: dp helpers
0237
0238 .. kernel-doc:: include/drm/display/drm_dp.h
0239 :internal:
0240
0241 .. kernel-doc:: include/drm/display/drm_dp_helper.h
0242 :internal:
0243
0244 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c
0245 :export:
0246
0247 Display Port CEC Helper Functions Reference
0248 ===========================================
0249
0250 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
0251 :doc: dp cec helpers
0252
0253 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c
0254 :export:
0255
0256 Display Port Dual Mode Adaptor Helper Functions Reference
0257 =========================================================
0258
0259 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
0260 :doc: dp dual mode helpers
0261
0262 .. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h
0263 :internal:
0264
0265 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c
0266 :export:
0267
0268 Display Port MST Helpers
0269 ========================
0270
0271 Overview
0272 --------
0273
0274 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
0275 :doc: dp mst helper
0276
0277 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
0278 :doc: Branch device and port refcounting
0279
0280 Functions Reference
0281 -------------------
0282
0283 .. kernel-doc:: include/drm/display/drm_dp_mst_helper.h
0284 :internal:
0285
0286 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
0287 :export:
0288
0289 Topology Lifetime Internals
0290 ---------------------------
0291
0292 These functions aren't exported to drivers, but are documented here to help make
0293 the MST topology helpers easier to understand
0294
0295 .. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c
0296 :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
0297 drm_dp_mst_topology_put_mstb
0298 drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
0299 drm_dp_mst_topology_put_port
0300 drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc
0301
0302 MIPI DBI Helper Functions Reference
0303 ===================================
0304
0305 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
0306 :doc: overview
0307
0308 .. kernel-doc:: include/drm/drm_mipi_dbi.h
0309 :internal:
0310
0311 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c
0312 :export:
0313
0314 MIPI DSI Helper Functions Reference
0315 ===================================
0316
0317 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
0318 :doc: dsi helpers
0319
0320 .. kernel-doc:: include/drm/drm_mipi_dsi.h
0321 :internal:
0322
0323 .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
0324 :export:
0325
0326 Display Stream Compression Helper Functions Reference
0327 =====================================================
0328
0329 .. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
0330 :doc: dsc helpers
0331
0332 .. kernel-doc:: include/drm/display/drm_dsc.h
0333 :internal:
0334
0335 .. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c
0336 :export:
0337
0338 Output Probing Helper Functions Reference
0339 =========================================
0340
0341 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
0342 :doc: output probing helper overview
0343
0344 .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
0345 :export:
0346
0347 EDID Helper Functions Reference
0348 ===============================
0349
0350 .. kernel-doc:: include/drm/drm_edid.h
0351 :internal:
0352
0353 .. kernel-doc:: drivers/gpu/drm/drm_edid.c
0354 :export:
0355
0356 SCDC Helper Functions Reference
0357 ===============================
0358
0359 .. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
0360 :doc: scdc helpers
0361
0362 .. kernel-doc:: include/drm/display/drm_scdc_helper.h
0363 :internal:
0364
0365 .. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c
0366 :export:
0367
0368 HDMI Infoframes Helper Reference
0369 ================================
0370
0371 Strictly speaking this is not a DRM helper library but generally useable
0372 by any driver interfacing with HDMI outputs like v4l or alsa drivers.
0373 But it nicely fits into the overall topic of mode setting helper
0374 libraries and hence is also included here.
0375
0376 .. kernel-doc:: include/linux/hdmi.h
0377 :internal:
0378
0379 .. kernel-doc:: drivers/video/hdmi.c
0380 :export:
0381
0382 Rectangle Utilities Reference
0383 =============================
0384
0385 .. kernel-doc:: include/drm/drm_rect.h
0386 :doc: rect utils
0387
0388 .. kernel-doc:: include/drm/drm_rect.h
0389 :internal:
0390
0391 .. kernel-doc:: drivers/gpu/drm/drm_rect.c
0392 :export:
0393
0394 Flip-work Helper Reference
0395 ==========================
0396
0397 .. kernel-doc:: include/drm/drm_flip_work.h
0398 :doc: flip utils
0399
0400 .. kernel-doc:: include/drm/drm_flip_work.h
0401 :internal:
0402
0403 .. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
0404 :export:
0405
0406 Auxiliary Modeset Helpers
0407 =========================
0408
0409 .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
0410 :doc: aux kms helpers
0411
0412 .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
0413 :export:
0414
0415 OF/DT Helpers
0416 =============
0417
0418 .. kernel-doc:: drivers/gpu/drm/drm_of.c
0419 :doc: overview
0420
0421 .. kernel-doc:: drivers/gpu/drm/drm_of.c
0422 :export:
0423
0424 Legacy Plane Helper Reference
0425 =============================
0426
0427 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
0428 :doc: overview
0429
0430 .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
0431 :export:
0432
0433 Legacy CRTC/Modeset Helper Functions Reference
0434 ==============================================
0435
0436 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
0437 :doc: overview
0438
0439 .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
0440 :export:
0441
0442 Privacy-screen class
0443 ====================
0444
0445 .. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
0446 :doc: overview
0447
0448 .. kernel-doc:: include/drm/drm_privacy_screen_driver.h
0449 :internal:
0450
0451 .. kernel-doc:: include/drm/drm_privacy_screen_machine.h
0452 :internal:
0453
0454 .. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c
0455 :export: