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
622fa91d15SJani NikulaAtomic State Reset and Initialization
632fa91d15SJani Nikula-------------------------------------
642fa91d15SJani Nikula
652fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
662fa91d15SJani Nikula   :doc: atomic state reset and initialization
672fa91d15SJani Nikula
681ea0c02eSDaniel VetterHelper Functions Reference
691ea0c02eSDaniel Vetter--------------------------
701ea0c02eSDaniel Vetter
712fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_atomic_helper.h
722fa91d15SJani Nikula   :internal:
732fa91d15SJani Nikula
742fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
752fa91d15SJani Nikula   :export:
762fa91d15SJani Nikula
77bcb32b69SDaniel VetterSimple KMS Helper Reference
78bcb32b69SDaniel Vetter===========================
79bcb32b69SDaniel Vetter
801ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
811ea35768SDaniel Vetter   :doc: overview
821ea35768SDaniel Vetter
83bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_simple_kms_helper.h
84bcb32b69SDaniel Vetter   :internal:
85bcb32b69SDaniel Vetter
86bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
87bcb32b69SDaniel Vetter   :export:
88bcb32b69SDaniel Vetter
892fa91d15SJani Nikulafbdev Helper Functions Reference
902fa91d15SJani Nikula================================
912fa91d15SJani Nikula
922fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
932fa91d15SJani Nikula   :doc: fbdev helpers
942fa91d15SJani Nikula
952fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_fb_helper.h
962fa91d15SJani Nikula   :internal:
972fa91d15SJani Nikula
981ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
991ea35768SDaniel Vetter   :export:
1001ea35768SDaniel Vetter
1012fa91d15SJani NikulaFramebuffer CMA Helper Functions Reference
1022fa91d15SJani Nikula==========================================
1032fa91d15SJani Nikula
1042fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
1052fa91d15SJani Nikula   :doc: framebuffer cma helper functions
1062fa91d15SJani Nikula
1072fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
1082fa91d15SJani Nikula   :export:
1092fa91d15SJani Nikula
1102564d0b0SDaniel Vetter.. _drm_bridges:
1112564d0b0SDaniel Vetter
1129bea6dd0SDaniel VetterFramebuffer GEM Helper Reference
1139bea6dd0SDaniel Vetter================================
1149bea6dd0SDaniel Vetter
1159bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
1169bea6dd0SDaniel Vetter   :doc: overview
1179bea6dd0SDaniel Vetter
1189bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
1199bea6dd0SDaniel Vetter   :export:
1209bea6dd0SDaniel Vetter
121bcb32b69SDaniel VetterBridges
122bcb32b69SDaniel Vetter=======
123bcb32b69SDaniel Vetter
124bcb32b69SDaniel VetterOverview
125bcb32b69SDaniel Vetter--------
126bcb32b69SDaniel Vetter
127bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
128bcb32b69SDaniel Vetter   :doc: overview
129bcb32b69SDaniel Vetter
130bcb32b69SDaniel VetterDefault bridge callback sequence
131bcb32b69SDaniel Vetter--------------------------------
132bcb32b69SDaniel Vetter
133bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
134bcb32b69SDaniel Vetter   :doc: bridge callbacks
135bcb32b69SDaniel Vetter
136199e4e96SDaniel Vetter
137199e4e96SDaniel VetterBridge Helper Reference
138199e4e96SDaniel Vetter-------------------------
139199e4e96SDaniel Vetter
140199e4e96SDaniel Vetter.. kernel-doc:: include/drm/drm_bridge.h
141199e4e96SDaniel Vetter   :internal:
142199e4e96SDaniel Vetter
143bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
144bcb32b69SDaniel Vetter   :export:
145bcb32b69SDaniel Vetter
14613dfc054SEric AnholtPanel-Bridge Helper Reference
14713dfc054SEric Anholt-----------------------------
14813dfc054SEric Anholt
14913dfc054SEric Anholt.. kernel-doc:: drivers/gpu/drm/bridge/panel.c
15013dfc054SEric Anholt   :export:
15113dfc054SEric Anholt
1522564d0b0SDaniel Vetter.. _drm_panel_helper:
1532564d0b0SDaniel Vetter
154bcb32b69SDaniel VetterPanel Helper Reference
155bcb32b69SDaniel Vetter======================
156bcb32b69SDaniel Vetter
1571ea35768SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c
1581ea35768SDaniel Vetter   :doc: drm panel
1591ea35768SDaniel Vetter
160bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_panel.h
161bcb32b69SDaniel Vetter   :internal:
162bcb32b69SDaniel Vetter
163bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c
164bcb32b69SDaniel Vetter   :export:
165bcb32b69SDaniel Vetter
166404d1a3eSHans de Goede.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c
167404d1a3eSHans de Goede   :export:
168404d1a3eSHans de Goede
1692fa91d15SJani NikulaDisplay Port Helper Functions Reference
1702fa91d15SJani Nikula=======================================
1712fa91d15SJani Nikula
1722fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1732fa91d15SJani Nikula   :doc: dp helpers
1742fa91d15SJani Nikula
1752fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_helper.h
1762fa91d15SJani Nikula   :internal:
1772fa91d15SJani Nikula
1782fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1792fa91d15SJani Nikula   :export:
1802fa91d15SJani Nikula
181d2e2d265SHans VerkuilDisplay Port CEC Helper Functions Reference
182d2e2d265SHans Verkuil===========================================
183d2e2d265SHans Verkuil
184d2e2d265SHans Verkuil.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c
185d2e2d265SHans Verkuil   :doc: dp cec helpers
186d2e2d265SHans Verkuil
187d2e2d265SHans Verkuil.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c
188d2e2d265SHans Verkuil   :export:
189d2e2d265SHans Verkuil
1902fa91d15SJani NikulaDisplay Port Dual Mode Adaptor Helper Functions Reference
1912fa91d15SJani Nikula=========================================================
1922fa91d15SJani Nikula
1932fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
1942fa91d15SJani Nikula   :doc: dp dual mode helpers
1952fa91d15SJani Nikula
1962fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h
1972fa91d15SJani Nikula   :internal:
1982fa91d15SJani Nikula
1992fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
2002fa91d15SJani Nikula   :export:
2012fa91d15SJani Nikula
2022fa91d15SJani NikulaDisplay Port MST Helper Functions Reference
2032fa91d15SJani Nikula===========================================
2042fa91d15SJani Nikula
2052fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
2062fa91d15SJani Nikula   :doc: dp mst helper
2072fa91d15SJani Nikula
2082fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h
2092fa91d15SJani Nikula   :internal:
2102fa91d15SJani Nikula
2112fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
2122fa91d15SJani Nikula   :export:
2132fa91d15SJani Nikula
2142fa91d15SJani NikulaMIPI DSI Helper Functions Reference
2152fa91d15SJani Nikula===================================
2162fa91d15SJani Nikula
2172fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
2182fa91d15SJani Nikula   :doc: dsi helpers
2192fa91d15SJani Nikula
2202fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h
2212fa91d15SJani Nikula   :internal:
2222fa91d15SJani Nikula
2232fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
2242fa91d15SJani Nikula   :export:
2252fa91d15SJani Nikula
226bcb32b69SDaniel VetterOutput Probing Helper Functions Reference
227bcb32b69SDaniel Vetter=========================================
228bcb32b69SDaniel Vetter
229bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
230bcb32b69SDaniel Vetter   :doc: output probing helper overview
231bcb32b69SDaniel Vetter
232bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
233bcb32b69SDaniel Vetter   :export:
234bcb32b69SDaniel Vetter
2352fa91d15SJani NikulaEDID Helper Functions Reference
2362fa91d15SJani Nikula===============================
2372fa91d15SJani Nikula
238cdc3d09fSDaniel Vetter.. kernel-doc:: include/drm/drm_edid.h
239cdc3d09fSDaniel Vetter   :internal:
240cdc3d09fSDaniel Vetter
2412fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c
2422fa91d15SJani Nikula   :export:
2432fa91d15SJani Nikula
2443ad33ae2SThierry RedingSCDC Helper Functions Reference
2453ad33ae2SThierry Reding===============================
2463ad33ae2SThierry Reding
2473ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c
2483ad33ae2SThierry Reding   :doc: scdc helpers
2493ad33ae2SThierry Reding
2503ad33ae2SThierry Reding.. kernel-doc:: include/drm/drm_scdc_helper.h
2513ad33ae2SThierry Reding   :internal:
2523ad33ae2SThierry Reding
2533ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c
2543ad33ae2SThierry Reding   :export:
2553ad33ae2SThierry Reding
2562fa91d15SJani NikulaRectangle Utilities Reference
2572fa91d15SJani Nikula=============================
2582fa91d15SJani Nikula
2592fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
2602fa91d15SJani Nikula   :doc: rect utils
2612fa91d15SJani Nikula
2622fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
2632fa91d15SJani Nikula   :internal:
2642fa91d15SJani Nikula
2652fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c
2662fa91d15SJani Nikula   :export:
2672fa91d15SJani Nikula
2682fa91d15SJani NikulaHDMI Infoframes Helper Reference
2692fa91d15SJani Nikula================================
2702fa91d15SJani Nikula
2712fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable
2722fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers.
2732fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper
2742fa91d15SJani Nikulalibraries and hence is also included here.
2752fa91d15SJani Nikula
2762fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h
2772fa91d15SJani Nikula   :internal:
2782fa91d15SJani Nikula
2792fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c
2802fa91d15SJani Nikula   :export:
2812fa91d15SJani Nikula
282bcb32b69SDaniel VetterFlip-work Helper Reference
283bcb32b69SDaniel Vetter==========================
284bcb32b69SDaniel Vetter
285bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
286bcb32b69SDaniel Vetter   :doc: flip utils
287bcb32b69SDaniel Vetter
288bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
289bcb32b69SDaniel Vetter   :internal:
290bcb32b69SDaniel Vetter
291bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
292bcb32b69SDaniel Vetter   :export:
293bcb32b69SDaniel Vetter
2941de72fafSDaniel VetterAuxiliary Modeset Helpers
2951de72fafSDaniel Vetter=========================
2961de72fafSDaniel Vetter
2971de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
2981de72fafSDaniel Vetter   :doc: aux kms helpers
2991de72fafSDaniel Vetter
3001de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
3011de72fafSDaniel Vetter   :export:
3024c3dbb2cSNoralf Trønnes
3037f9e7ec9SDaniel VetterOF/DT Helpers
3047f9e7ec9SDaniel Vetter=============
3057f9e7ec9SDaniel Vetter
3067f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c
3077f9e7ec9SDaniel Vetter   :doc: overview
3087f9e7ec9SDaniel Vetter
3097f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c
3107f9e7ec9SDaniel Vetter   :export:
3117f9e7ec9SDaniel Vetter
3125fca5eceSDaniel VetterLegacy Plane Helper Reference
3135fca5eceSDaniel Vetter=============================
3145fca5eceSDaniel Vetter
3155fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
3165fca5eceSDaniel Vetter   :doc: overview
3175fca5eceSDaniel Vetter
3185fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
3195fca5eceSDaniel Vetter   :export:
3205fca5eceSDaniel Vetter
3215fca5eceSDaniel VetterLegacy CRTC/Modeset Helper Functions Reference
3225fca5eceSDaniel Vetter==============================================
3235fca5eceSDaniel Vetter
3245fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
3255fca5eceSDaniel Vetter   :doc: overview
3265fca5eceSDaniel Vetter
3275fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
3285fca5eceSDaniel Vetter   :export:
329