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 40bcb32b69SDaniel Vetter :internal: 41bcb32b69SDaniel Vetter 42bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 43bcb32b69SDaniel Vetter :doc: overview 442fa91d15SJani Nikula 452fa91d15SJani NikulaAtomic Modeset Helper Functions Reference 462fa91d15SJani Nikula========================================= 472fa91d15SJani Nikula 482fa91d15SJani NikulaOverview 492fa91d15SJani Nikula-------- 502fa91d15SJani Nikula 512fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 522fa91d15SJani Nikula :doc: overview 532fa91d15SJani Nikula 542fa91d15SJani NikulaImplementing Asynchronous Atomic Commit 552fa91d15SJani Nikula--------------------------------------- 562fa91d15SJani Nikula 572fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 582fa91d15SJani Nikula :doc: implementing nonblocking commit 592fa91d15SJani Nikula 602fa91d15SJani NikulaAtomic State Reset and Initialization 612fa91d15SJani Nikula------------------------------------- 622fa91d15SJani Nikula 632fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 642fa91d15SJani Nikula :doc: atomic state reset and initialization 652fa91d15SJani Nikula 662fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_atomic_helper.h 672fa91d15SJani Nikula :internal: 682fa91d15SJani Nikula 692fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 702fa91d15SJani Nikula :export: 712fa91d15SJani Nikula 722fa91d15SJani NikulaLegacy CRTC/Modeset Helper Functions Reference 732fa91d15SJani Nikula============================================== 742fa91d15SJani Nikula 752fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 762fa91d15SJani Nikula :doc: overview 772fa91d15SJani Nikula 78bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 792fa91d15SJani Nikula :export: 802fa91d15SJani Nikula 81bcb32b69SDaniel VetterSimple KMS Helper Reference 82bcb32b69SDaniel Vetter=========================== 83bcb32b69SDaniel Vetter 84bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_simple_kms_helper.h 85bcb32b69SDaniel Vetter :internal: 86bcb32b69SDaniel Vetter 87bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 88bcb32b69SDaniel Vetter :export: 89bcb32b69SDaniel Vetter 90bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 91bcb32b69SDaniel Vetter :doc: overview 92bcb32b69SDaniel Vetter 932fa91d15SJani Nikulafbdev Helper Functions Reference 942fa91d15SJani Nikula================================ 952fa91d15SJani Nikula 962fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 972fa91d15SJani Nikula :doc: fbdev helpers 982fa91d15SJani Nikula 992fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 1002fa91d15SJani Nikula :export: 1012fa91d15SJani Nikula 1022fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_fb_helper.h 1032fa91d15SJani Nikula :internal: 1042fa91d15SJani Nikula 1052fa91d15SJani NikulaFramebuffer CMA Helper Functions Reference 1062fa91d15SJani Nikula========================================== 1072fa91d15SJani Nikula 1082fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 1092fa91d15SJani Nikula :doc: framebuffer cma helper functions 1102fa91d15SJani Nikula 1112fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 1122fa91d15SJani Nikula :export: 1132fa91d15SJani Nikula 114bcb32b69SDaniel VetterBridges 115bcb32b69SDaniel Vetter======= 116bcb32b69SDaniel Vetter 117bcb32b69SDaniel VetterOverview 118bcb32b69SDaniel Vetter-------- 119bcb32b69SDaniel Vetter 120bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 121bcb32b69SDaniel Vetter :doc: overview 122bcb32b69SDaniel Vetter 123bcb32b69SDaniel VetterDefault bridge callback sequence 124bcb32b69SDaniel Vetter-------------------------------- 125bcb32b69SDaniel Vetter 126bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 127bcb32b69SDaniel Vetter :doc: bridge callbacks 128bcb32b69SDaniel Vetter 129199e4e96SDaniel Vetter 130199e4e96SDaniel VetterBridge Helper Reference 131199e4e96SDaniel Vetter------------------------- 132199e4e96SDaniel Vetter 133199e4e96SDaniel Vetter.. kernel-doc:: include/drm/drm_bridge.h 134199e4e96SDaniel Vetter :internal: 135199e4e96SDaniel Vetter 136bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 137bcb32b69SDaniel Vetter :export: 138bcb32b69SDaniel Vetter 139bcb32b69SDaniel VetterPanel Helper Reference 140bcb32b69SDaniel Vetter====================== 141bcb32b69SDaniel Vetter 142bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_panel.h 143bcb32b69SDaniel Vetter :internal: 144bcb32b69SDaniel Vetter 145bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c 146bcb32b69SDaniel Vetter :export: 147bcb32b69SDaniel Vetter 148bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c 149bcb32b69SDaniel Vetter :doc: drm panel 150bcb32b69SDaniel Vetter 1512fa91d15SJani NikulaDisplay Port Helper Functions Reference 1522fa91d15SJani Nikula======================================= 1532fa91d15SJani Nikula 1542fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 1552fa91d15SJani Nikula :doc: dp helpers 1562fa91d15SJani Nikula 1572fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_helper.h 1582fa91d15SJani Nikula :internal: 1592fa91d15SJani Nikula 1602fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 1612fa91d15SJani Nikula :export: 1622fa91d15SJani Nikula 1632fa91d15SJani NikulaDisplay Port Dual Mode Adaptor Helper Functions Reference 1642fa91d15SJani Nikula========================================================= 1652fa91d15SJani Nikula 1662fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 1672fa91d15SJani Nikula :doc: dp dual mode helpers 1682fa91d15SJani Nikula 1692fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h 1702fa91d15SJani Nikula :internal: 1712fa91d15SJani Nikula 1722fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 1732fa91d15SJani Nikula :export: 1742fa91d15SJani Nikula 1752fa91d15SJani NikulaDisplay Port MST Helper Functions Reference 1762fa91d15SJani Nikula=========================================== 1772fa91d15SJani Nikula 1782fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 1792fa91d15SJani Nikula :doc: dp mst helper 1802fa91d15SJani Nikula 1812fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h 1822fa91d15SJani Nikula :internal: 1832fa91d15SJani Nikula 1842fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 1852fa91d15SJani Nikula :export: 1862fa91d15SJani Nikula 1872fa91d15SJani NikulaMIPI DSI Helper Functions Reference 1882fa91d15SJani Nikula=================================== 1892fa91d15SJani Nikula 1902fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 1912fa91d15SJani Nikula :doc: dsi helpers 1922fa91d15SJani Nikula 1932fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h 1942fa91d15SJani Nikula :internal: 1952fa91d15SJani Nikula 1962fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 1972fa91d15SJani Nikula :export: 1982fa91d15SJani Nikula 199bcb32b69SDaniel VetterOutput Probing Helper Functions Reference 200bcb32b69SDaniel Vetter========================================= 201bcb32b69SDaniel Vetter 202bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 203bcb32b69SDaniel Vetter :doc: output probing helper overview 204bcb32b69SDaniel Vetter 205bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 206bcb32b69SDaniel Vetter :export: 207bcb32b69SDaniel Vetter 2082fa91d15SJani NikulaEDID Helper Functions Reference 2092fa91d15SJani Nikula=============================== 2102fa91d15SJani Nikula 211cdc3d09fSDaniel Vetter.. kernel-doc:: include/drm/drm_edid.h 212cdc3d09fSDaniel Vetter :internal: 213cdc3d09fSDaniel Vetter 2142fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c 2152fa91d15SJani Nikula :export: 2162fa91d15SJani Nikula 2172fa91d15SJani NikulaRectangle Utilities Reference 2182fa91d15SJani Nikula============================= 2192fa91d15SJani Nikula 2202fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h 2212fa91d15SJani Nikula :doc: rect utils 2222fa91d15SJani Nikula 2232fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h 2242fa91d15SJani Nikula :internal: 2252fa91d15SJani Nikula 2262fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c 2272fa91d15SJani Nikula :export: 2282fa91d15SJani Nikula 2292fa91d15SJani NikulaHDMI Infoframes Helper Reference 2302fa91d15SJani Nikula================================ 2312fa91d15SJani Nikula 2322fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable 2332fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers. 2342fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper 2352fa91d15SJani Nikulalibraries and hence is also included here. 2362fa91d15SJani Nikula 2372fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h 2382fa91d15SJani Nikula :internal: 2392fa91d15SJani Nikula 2402fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c 2412fa91d15SJani Nikula :export: 2422fa91d15SJani Nikula 243bcb32b69SDaniel VetterFlip-work Helper Reference 244bcb32b69SDaniel Vetter========================== 245bcb32b69SDaniel Vetter 246bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h 247bcb32b69SDaniel Vetter :doc: flip utils 248bcb32b69SDaniel Vetter 249bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h 250bcb32b69SDaniel Vetter :internal: 251bcb32b69SDaniel Vetter 252bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c 253bcb32b69SDaniel Vetter :export: 254bcb32b69SDaniel Vetter 2552fa91d15SJani NikulaPlane Helper Reference 2562fa91d15SJani Nikula====================== 2572fa91d15SJani Nikula 2582fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 2592fa91d15SJani Nikula :doc: overview 2602fa91d15SJani Nikula 261bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 262bcb32b69SDaniel Vetter :export: 263bcb32b69SDaniel Vetter 2642fa91d15SJani NikulaTile group 265bcb32b69SDaniel Vetter========== 266bcb32b69SDaniel Vetter 267bcb32b69SDaniel Vetter# FIXME: This should probably be moved into a property documentation section 2682fa91d15SJani Nikula 2692fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc.c 2702fa91d15SJani Nikula :doc: Tile group 2711de72fafSDaniel Vetter 2721de72fafSDaniel VetterAuxiliary Modeset Helpers 2731de72fafSDaniel Vetter========================= 2741de72fafSDaniel Vetter 2751de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 2761de72fafSDaniel Vetter :doc: aux kms helpers 2771de72fafSDaniel Vetter 2781de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 2791de72fafSDaniel Vetter :export: 280