12fa91d15SJani Nikula============================= 22fa91d15SJani NikulaMode Setting Helper Functions 32fa91d15SJani Nikula============================= 42fa91d15SJani Nikula 5bcb32b69SDaniel VetterThe DRM subsystem aims for a strong separation between core code and helper 6bcb32b69SDaniel Vetterlibraries. Core code takes care of general setup and teardown and decoding 7bcb32b69SDaniel Vetteruserspace requests to kernel internal objects. Everything else is handled by a 8bcb32b69SDaniel Vetterlarge set of helper libraries, which can be combined freely to pick and choose 9bcb32b69SDaniel Vetterfor each driver what fits, and avoid shared code where special behaviour is 10bcb32b69SDaniel Vetterneeded. 112fa91d15SJani Nikula 12bcb32b69SDaniel VetterThis distinction between core code and helpers is especially strong in the 13bcb32b69SDaniel Vettermodesetting code, where there's a shared userspace ABI for all drivers. This is 14bcb32b69SDaniel Vetterin contrast to the render side, where pretty much everything (with very few 15bcb32b69SDaniel Vetterexceptions) can be considered optional helper code. 162fa91d15SJani Nikula 17bcb32b69SDaniel VetterThere are a few areas these helpers can grouped into: 182fa91d15SJani Nikula 19bcb32b69SDaniel Vetter* Helpers to implement modesetting. The important ones here are the atomic 20bcb32b69SDaniel Vetter helpers. Old drivers still often use the legacy CRTC helpers. They both share 21bcb32b69SDaniel Vetter the same set of common helper vtables. For really simple drivers (anything 22bcb32b69SDaniel Vetter that would have been a great fit in the deprecated fbdev subsystem) there's 23bcb32b69SDaniel Vetter also the simple display pipe helpers. 24bcb32b69SDaniel Vetter 25bcb32b69SDaniel Vetter* There's a big pile of helpers for handling outputs. First the generic bridge 26bcb32b69SDaniel Vetter helpers for handling encoder and transcoder IP blocks. Second the panel helpers 27bcb32b69SDaniel Vetter for handling panel-related information and logic. Plus then a big set of 28bcb32b69SDaniel Vetter helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally 29bcb32b69SDaniel Vetter there's also generic helpers for handling output probing, and for dealing with 30bcb32b69SDaniel Vetter EDIDs. 31bcb32b69SDaniel Vetter 32bcb32b69SDaniel Vetter* The last group of helpers concerns itself with the frontend side of a display 33bcb32b69SDaniel Vetter pipeline: Planes, handling rectangles for visibility checking and scissoring, 34bcb32b69SDaniel Vetter flip queues and assorted bits. 35bcb32b69SDaniel Vetter 36bcb32b69SDaniel VetterModeset Helper Reference for Common Vtables 37bcb32b69SDaniel Vetter=========================================== 38bcb32b69SDaniel Vetter 39bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 401ea35768SDaniel Vetter :doc: overview 41bcb32b69SDaniel Vetter 42bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 431ea35768SDaniel Vetter :internal: 442fa91d15SJani Nikula 454a8e2292SDaniel Vetter.. _drm_atomic_helper: 464a8e2292SDaniel Vetter 472fa91d15SJani NikulaAtomic Modeset Helper Functions Reference 482fa91d15SJani Nikula========================================= 492fa91d15SJani Nikula 502fa91d15SJani NikulaOverview 512fa91d15SJani Nikula-------- 522fa91d15SJani Nikula 532fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 542fa91d15SJani Nikula :doc: overview 552fa91d15SJani Nikula 562fa91d15SJani NikulaImplementing Asynchronous Atomic Commit 572fa91d15SJani Nikula--------------------------------------- 582fa91d15SJani Nikula 592fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 602fa91d15SJani Nikula :doc: implementing nonblocking commit 612fa91d15SJani Nikula 621ea0c02eSDaniel VetterHelper Functions Reference 631ea0c02eSDaniel Vetter-------------------------- 641ea0c02eSDaniel Vetter 652fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_atomic_helper.h 662fa91d15SJani Nikula :internal: 672fa91d15SJani Nikula 682fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 692fa91d15SJani Nikula :export: 702fa91d15SJani Nikula 719ef8a9dcSDaniel VetterAtomic State Reset and Initialization 729ef8a9dcSDaniel Vetter------------------------------------- 739ef8a9dcSDaniel Vetter 749ef8a9dcSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 759ef8a9dcSDaniel Vetter :doc: atomic state reset and initialization 769ef8a9dcSDaniel Vetter 779ef8a9dcSDaniel VetterAtomic State Helper Reference 789ef8a9dcSDaniel Vetter----------------------------- 799ef8a9dcSDaniel Vetter 809ef8a9dcSDaniel Vetter.. kernel-doc:: include/drm/drm_atomic_state_helper.h 819ef8a9dcSDaniel Vetter :internal: 829ef8a9dcSDaniel Vetter 839ef8a9dcSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 849ef8a9dcSDaniel Vetter :export: 859ef8a9dcSDaniel Vetter 86bcb32b69SDaniel VetterSimple KMS Helper Reference 87bcb32b69SDaniel Vetter=========================== 88bcb32b69SDaniel Vetter 891ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 901ea35768SDaniel Vetter :doc: overview 911ea35768SDaniel Vetter 92bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_simple_kms_helper.h 93bcb32b69SDaniel Vetter :internal: 94bcb32b69SDaniel Vetter 95bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 96bcb32b69SDaniel Vetter :export: 97bcb32b69SDaniel Vetter 982fa91d15SJani Nikulafbdev Helper Functions Reference 992fa91d15SJani Nikula================================ 1002fa91d15SJani Nikula 1012fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 1022fa91d15SJani Nikula :doc: fbdev helpers 1032fa91d15SJani Nikula 1042fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_fb_helper.h 1052fa91d15SJani Nikula :internal: 1062fa91d15SJani Nikula 1071ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 1081ea35768SDaniel Vetter :export: 1091ea35768SDaniel Vetter 1102fa91d15SJani NikulaFramebuffer CMA Helper Functions Reference 1112fa91d15SJani Nikula========================================== 1122fa91d15SJani Nikula 1132fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 1142fa91d15SJani Nikula :doc: framebuffer cma helper functions 1152fa91d15SJani Nikula 1162fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 1172fa91d15SJani Nikula :export: 1182fa91d15SJani Nikula 1192564d0b0SDaniel Vetter.. _drm_bridges: 1202564d0b0SDaniel Vetter 1219bea6dd0SDaniel VetterFramebuffer GEM Helper Reference 1229bea6dd0SDaniel Vetter================================ 1239bea6dd0SDaniel Vetter 1249bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 1259bea6dd0SDaniel Vetter :doc: overview 1269bea6dd0SDaniel Vetter 1279bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 1289bea6dd0SDaniel Vetter :export: 1299bea6dd0SDaniel Vetter 130bcb32b69SDaniel VetterBridges 131bcb32b69SDaniel Vetter======= 132bcb32b69SDaniel Vetter 133bcb32b69SDaniel VetterOverview 134bcb32b69SDaniel Vetter-------- 135bcb32b69SDaniel Vetter 136bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 137bcb32b69SDaniel Vetter :doc: overview 138bcb32b69SDaniel Vetter 139bcb32b69SDaniel VetterDefault bridge callback sequence 140bcb32b69SDaniel Vetter-------------------------------- 141bcb32b69SDaniel Vetter 142bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 143bcb32b69SDaniel Vetter :doc: bridge callbacks 144bcb32b69SDaniel Vetter 145199e4e96SDaniel Vetter 146199e4e96SDaniel VetterBridge Helper Reference 147199e4e96SDaniel Vetter------------------------- 148199e4e96SDaniel Vetter 149199e4e96SDaniel Vetter.. kernel-doc:: include/drm/drm_bridge.h 150199e4e96SDaniel Vetter :internal: 151199e4e96SDaniel Vetter 152bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 153bcb32b69SDaniel Vetter :export: 154bcb32b69SDaniel Vetter 15513dfc054SEric AnholtPanel-Bridge Helper Reference 15613dfc054SEric Anholt----------------------------- 15713dfc054SEric Anholt 15813dfc054SEric Anholt.. kernel-doc:: drivers/gpu/drm/bridge/panel.c 15913dfc054SEric Anholt :export: 16013dfc054SEric Anholt 1612564d0b0SDaniel Vetter.. _drm_panel_helper: 1622564d0b0SDaniel Vetter 163bcb32b69SDaniel VetterPanel Helper Reference 164bcb32b69SDaniel Vetter====================== 165bcb32b69SDaniel Vetter 1661ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c 1671ea35768SDaniel Vetter :doc: drm panel 1681ea35768SDaniel Vetter 169bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_panel.h 170bcb32b69SDaniel Vetter :internal: 171bcb32b69SDaniel Vetter 172bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c 173bcb32b69SDaniel Vetter :export: 174bcb32b69SDaniel Vetter 175404d1a3eSHans de Goede.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c 176404d1a3eSHans de Goede :export: 177404d1a3eSHans de Goede 1782fa91d15SJani NikulaDisplay Port Helper Functions Reference 1792fa91d15SJani Nikula======================================= 1802fa91d15SJani Nikula 1812fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 1822fa91d15SJani Nikula :doc: dp helpers 1832fa91d15SJani Nikula 1842fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_helper.h 1852fa91d15SJani Nikula :internal: 1862fa91d15SJani Nikula 1872fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 1882fa91d15SJani Nikula :export: 1892fa91d15SJani Nikula 190d2e2d265SHans VerkuilDisplay Port CEC Helper Functions Reference 191d2e2d265SHans Verkuil=========================================== 192d2e2d265SHans Verkuil 193d2e2d265SHans Verkuil.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c 194d2e2d265SHans Verkuil :doc: dp cec helpers 195d2e2d265SHans Verkuil 196d2e2d265SHans Verkuil.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c 197d2e2d265SHans Verkuil :export: 198d2e2d265SHans Verkuil 1992fa91d15SJani NikulaDisplay Port Dual Mode Adaptor Helper Functions Reference 2002fa91d15SJani Nikula========================================================= 2012fa91d15SJani Nikula 2022fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 2032fa91d15SJani Nikula :doc: dp dual mode helpers 2042fa91d15SJani Nikula 2052fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h 2062fa91d15SJani Nikula :internal: 2072fa91d15SJani Nikula 2082fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 2092fa91d15SJani Nikula :export: 2102fa91d15SJani Nikula 2112fa91d15SJani NikulaDisplay Port MST Helper Functions Reference 2122fa91d15SJani Nikula=========================================== 2132fa91d15SJani Nikula 2142fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 2152fa91d15SJani Nikula :doc: dp mst helper 2162fa91d15SJani Nikula 2172fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h 2182fa91d15SJani Nikula :internal: 2192fa91d15SJani Nikula 2202fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 2212fa91d15SJani Nikula :export: 2222fa91d15SJani Nikula 2232fa91d15SJani NikulaMIPI DSI Helper Functions Reference 2242fa91d15SJani Nikula=================================== 2252fa91d15SJani Nikula 2262fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 2272fa91d15SJani Nikula :doc: dsi helpers 2282fa91d15SJani Nikula 2292fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h 2302fa91d15SJani Nikula :internal: 2312fa91d15SJani Nikula 2322fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 2332fa91d15SJani Nikula :export: 2342fa91d15SJani Nikula 235bcb32b69SDaniel VetterOutput Probing Helper Functions Reference 236bcb32b69SDaniel Vetter========================================= 237bcb32b69SDaniel Vetter 238bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 239bcb32b69SDaniel Vetter :doc: output probing helper overview 240bcb32b69SDaniel Vetter 241bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 242bcb32b69SDaniel Vetter :export: 243bcb32b69SDaniel Vetter 2442fa91d15SJani NikulaEDID Helper Functions Reference 2452fa91d15SJani Nikula=============================== 2462fa91d15SJani Nikula 247cdc3d09fSDaniel Vetter.. kernel-doc:: include/drm/drm_edid.h 248cdc3d09fSDaniel Vetter :internal: 249cdc3d09fSDaniel Vetter 2502fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c 2512fa91d15SJani Nikula :export: 2522fa91d15SJani Nikula 2533ad33ae2SThierry RedingSCDC Helper Functions Reference 2543ad33ae2SThierry Reding=============================== 2553ad33ae2SThierry Reding 2563ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c 2573ad33ae2SThierry Reding :doc: scdc helpers 2583ad33ae2SThierry Reding 2593ad33ae2SThierry Reding.. kernel-doc:: include/drm/drm_scdc_helper.h 2603ad33ae2SThierry Reding :internal: 2613ad33ae2SThierry Reding 2623ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c 2633ad33ae2SThierry Reding :export: 2643ad33ae2SThierry Reding 2652fa91d15SJani NikulaRectangle Utilities Reference 2662fa91d15SJani Nikula============================= 2672fa91d15SJani Nikula 2682fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h 2692fa91d15SJani Nikula :doc: rect utils 2702fa91d15SJani Nikula 2712fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h 2722fa91d15SJani Nikula :internal: 2732fa91d15SJani Nikula 2742fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c 2752fa91d15SJani Nikula :export: 2762fa91d15SJani Nikula 2772fa91d15SJani NikulaHDMI Infoframes Helper Reference 2782fa91d15SJani Nikula================================ 2792fa91d15SJani Nikula 2802fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable 2812fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers. 2822fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper 2832fa91d15SJani Nikulalibraries and hence is also included here. 2842fa91d15SJani Nikula 2852fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h 2862fa91d15SJani Nikula :internal: 2872fa91d15SJani Nikula 2882fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c 2892fa91d15SJani Nikula :export: 2902fa91d15SJani Nikula 291bcb32b69SDaniel VetterFlip-work Helper Reference 292bcb32b69SDaniel Vetter========================== 293bcb32b69SDaniel Vetter 294bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h 295bcb32b69SDaniel Vetter :doc: flip utils 296bcb32b69SDaniel Vetter 297bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h 298bcb32b69SDaniel Vetter :internal: 299bcb32b69SDaniel Vetter 300bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c 301bcb32b69SDaniel Vetter :export: 302bcb32b69SDaniel Vetter 3031de72fafSDaniel VetterAuxiliary Modeset Helpers 3041de72fafSDaniel Vetter========================= 3051de72fafSDaniel Vetter 3061de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 3071de72fafSDaniel Vetter :doc: aux kms helpers 3081de72fafSDaniel Vetter 3091de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 3101de72fafSDaniel Vetter :export: 3114c3dbb2cSNoralf Trønnes 3127f9e7ec9SDaniel VetterOF/DT Helpers 3137f9e7ec9SDaniel Vetter============= 3147f9e7ec9SDaniel Vetter 3157f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c 3167f9e7ec9SDaniel Vetter :doc: overview 3177f9e7ec9SDaniel Vetter 3187f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c 3197f9e7ec9SDaniel Vetter :export: 3207f9e7ec9SDaniel Vetter 3215fca5eceSDaniel VetterLegacy Plane Helper Reference 3225fca5eceSDaniel Vetter============================= 3235fca5eceSDaniel Vetter 3245fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 3255fca5eceSDaniel Vetter :doc: overview 3265fca5eceSDaniel Vetter 3275fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 3285fca5eceSDaniel Vetter :export: 3295fca5eceSDaniel Vetter 3305fca5eceSDaniel VetterLegacy CRTC/Modeset Helper Functions Reference 3315fca5eceSDaniel Vetter============================================== 3325fca5eceSDaniel Vetter 3335fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 3345fca5eceSDaniel Vetter :doc: overview 3355fca5eceSDaniel Vetter 3365fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 3375fca5eceSDaniel Vetter :export: 338