Back to home page

OSCL-LXR

 
 

    


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: