|  | ============================= | 
|  | Mode Setting Helper Functions | 
|  | ============================= | 
|  |  | 
|  | The DRM subsystem aims for a strong separation between core code and helper | 
|  | libraries. Core code takes care of general setup and teardown and decoding | 
|  | userspace requests to kernel internal objects. Everything else is handled by a | 
|  | large set of helper libraries, which can be combined freely to pick and choose | 
|  | for each driver what fits, and avoid shared code where special behaviour is | 
|  | needed. | 
|  |  | 
|  | This distinction between core code and helpers is especially strong in the | 
|  | modesetting code, where there's a shared userspace ABI for all drivers. This is | 
|  | in contrast to the render side, where pretty much everything (with very few | 
|  | exceptions) can be considered optional helper code. | 
|  |  | 
|  | There are a few areas these helpers can grouped into: | 
|  |  | 
|  | * Helpers to implement modesetting. The important ones here are the atomic | 
|  | helpers. Old drivers still often use the legacy CRTC helpers. They both share | 
|  | the same set of common helper vtables. For really simple drivers (anything | 
|  | that would have been a great fit in the deprecated fbdev subsystem) there's | 
|  | also the simple display pipe helpers. | 
|  |  | 
|  | * There's a big pile of helpers for handling outputs. First the generic bridge | 
|  | helpers for handling encoder and transcoder IP blocks. Second the panel helpers | 
|  | for handling panel-related information and logic. Plus then a big set of | 
|  | helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally | 
|  | there's also generic helpers for handling output probing, and for dealing with | 
|  | EDIDs. | 
|  |  | 
|  | * The last group of helpers concerns itself with the frontend side of a display | 
|  | pipeline: Planes, handling rectangles for visibility checking and scissoring, | 
|  | flip queues and assorted bits. | 
|  |  | 
|  | Modeset Helper Reference for Common Vtables | 
|  | =========================================== | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_modeset_helper_vtables.h | 
|  | :internal: | 
|  |  | 
|  | .. _drm_atomic_helper: | 
|  |  | 
|  | Atomic Modeset Helper Functions Reference | 
|  | ========================================= | 
|  |  | 
|  | Overview | 
|  | -------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | Implementing Asynchronous Atomic Commit | 
|  | --------------------------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | 
|  | :doc: implementing nonblocking commit | 
|  |  | 
|  | Helper Functions Reference | 
|  | -------------------------- | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_atomic_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c | 
|  | :export: | 
|  |  | 
|  | Atomic State Reset and Initialization | 
|  | ------------------------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c | 
|  | :doc: atomic state reset and initialization | 
|  |  | 
|  | Atomic State Helper Reference | 
|  | ----------------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c | 
|  | :export: | 
|  |  | 
|  | Simple KMS Helper Reference | 
|  | =========================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_simple_kms_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c | 
|  | :export: | 
|  |  | 
|  | fbdev Helper Functions Reference | 
|  | ================================ | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c | 
|  | :doc: fbdev helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_fb_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c | 
|  | :export: | 
|  |  | 
|  | format Helper Functions Reference | 
|  | ================================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_format_helper.c | 
|  | :export: | 
|  |  | 
|  | Framebuffer CMA Helper Functions Reference | 
|  | ========================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c | 
|  | :doc: framebuffer cma helper functions | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c | 
|  | :export: | 
|  |  | 
|  | Framebuffer GEM Helper Reference | 
|  | ================================ | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c | 
|  | :export: | 
|  |  | 
|  | .. _drm_bridges: | 
|  |  | 
|  | Bridges | 
|  | ======= | 
|  |  | 
|  | Overview | 
|  | -------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | 
|  | :doc: overview | 
|  |  | 
|  | Bridge Operations | 
|  | ----------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | 
|  | :doc: bridge operations | 
|  |  | 
|  | Bridge Connector Helper | 
|  | ----------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_bridge_connector.c | 
|  | :doc: overview | 
|  |  | 
|  |  | 
|  | Bridge Helper Reference | 
|  | ------------------------- | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_bridge.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_bridge.c | 
|  | :export: | 
|  |  | 
|  | Bridge Connector Helper Reference | 
|  | --------------------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_bridge_connector.c | 
|  | :export: | 
|  |  | 
|  | Panel-Bridge Helper Reference | 
|  | ----------------------------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/bridge/panel.c | 
|  | :export: | 
|  |  | 
|  | .. _drm_panel_helper: | 
|  |  | 
|  | Panel Helper Reference | 
|  | ====================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_panel.c | 
|  | :doc: drm panel | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_panel.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_panel.c | 
|  | :export: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c | 
|  | :export: | 
|  |  | 
|  | Panel Self Refresh Helper Reference | 
|  | =================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c | 
|  | :export: | 
|  |  | 
|  | HDCP Helper Functions Reference | 
|  | =============================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_hdcp.c | 
|  | :export: | 
|  |  | 
|  | Display Port Helper Functions Reference | 
|  | ======================================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c | 
|  | :doc: dp helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_dp_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c | 
|  | :export: | 
|  |  | 
|  | Display Port CEC Helper Functions Reference | 
|  | =========================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c | 
|  | :doc: dp cec helpers | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c | 
|  | :export: | 
|  |  | 
|  | Display Port Dual Mode Adaptor Helper Functions Reference | 
|  | ========================================================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c | 
|  | :doc: dp dual mode helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c | 
|  | :export: | 
|  |  | 
|  | Display Port MST Helpers | 
|  | ======================== | 
|  |  | 
|  | Overview | 
|  | -------- | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | 
|  | :doc: dp mst helper | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | 
|  | :doc: Branch device and port refcounting | 
|  |  | 
|  | Functions Reference | 
|  | ------------------- | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_dp_mst_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | 
|  | :export: | 
|  |  | 
|  | Topology Lifetime Internals | 
|  | --------------------------- | 
|  |  | 
|  | These functions aren't exported to drivers, but are documented here to help make | 
|  | the MST topology helpers easier to understand | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c | 
|  | :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb | 
|  | drm_dp_mst_topology_put_mstb | 
|  | drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port | 
|  | drm_dp_mst_topology_put_port | 
|  | drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc | 
|  |  | 
|  | MIPI DBI Helper Functions Reference | 
|  | =================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_mipi_dbi.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c | 
|  | :export: | 
|  |  | 
|  | MIPI DSI Helper Functions Reference | 
|  | =================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c | 
|  | :doc: dsi helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_mipi_dsi.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c | 
|  | :export: | 
|  |  | 
|  | Display Stream Compression Helper Functions Reference | 
|  | ===================================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dsc.c | 
|  | :doc: dsc helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_dsc.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_dsc.c | 
|  | :export: | 
|  |  | 
|  | Output Probing Helper Functions Reference | 
|  | ========================================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c | 
|  | :doc: output probing helper overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c | 
|  | :export: | 
|  |  | 
|  | EDID Helper Functions Reference | 
|  | =============================== | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_edid.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_edid.c | 
|  | :export: | 
|  |  | 
|  | SCDC Helper Functions Reference | 
|  | =============================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c | 
|  | :doc: scdc helpers | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_scdc_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c | 
|  | :export: | 
|  |  | 
|  | HDMI Infoframes Helper Reference | 
|  | ================================ | 
|  |  | 
|  | Strictly speaking this is not a DRM helper library but generally useable | 
|  | by any driver interfacing with HDMI outputs like v4l or alsa drivers. | 
|  | But it nicely fits into the overall topic of mode setting helper | 
|  | libraries and hence is also included here. | 
|  |  | 
|  | .. kernel-doc:: include/linux/hdmi.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/video/hdmi.c | 
|  | :export: | 
|  |  | 
|  | Rectangle Utilities Reference | 
|  | ============================= | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_rect.h | 
|  | :doc: rect utils | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_rect.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_rect.c | 
|  | :export: | 
|  |  | 
|  | Flip-work Helper Reference | 
|  | ========================== | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_flip_work.h | 
|  | :doc: flip utils | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_flip_work.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_flip_work.c | 
|  | :export: | 
|  |  | 
|  | Auxiliary Modeset Helpers | 
|  | ========================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c | 
|  | :doc: aux kms helpers | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c | 
|  | :export: | 
|  |  | 
|  | OF/DT Helpers | 
|  | ============= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_of.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_of.c | 
|  | :export: | 
|  |  | 
|  | Legacy Plane Helper Reference | 
|  | ============================= | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c | 
|  | :export: | 
|  |  | 
|  | Legacy CRTC/Modeset Helper Functions Reference | 
|  | ============================================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c | 
|  | :export: | 
|  |  | 
|  | SHMEM GEM Helper Reference | 
|  | ========================== | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_gem_shmem_helper.c | 
|  | :doc: overview | 
|  |  | 
|  | .. kernel-doc:: include/drm/drm_gem_shmem_helper.h | 
|  | :internal: | 
|  |  | 
|  | .. kernel-doc:: drivers/gpu/drm/drm_gem_shmem_helper.c | 
|  | :export: |