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
1199bea6dd0SDaniel VetterFramebuffer GEM Helper Reference
1209bea6dd0SDaniel Vetter================================
1219bea6dd0SDaniel Vetter
1229bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
1239bea6dd0SDaniel Vetter   :doc: overview
1249bea6dd0SDaniel Vetter
1259bea6dd0SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c
1269bea6dd0SDaniel Vetter   :export:
1279bea6dd0SDaniel Vetter
128b981a686SDaniel Vetter.. _drm_bridges:
129b981a686SDaniel 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
211ebcc0e6bSLyude PaulDisplay Port MST Helpers
212ebcc0e6bSLyude Paul========================
213ebcc0e6bSLyude Paul
214ebcc0e6bSLyude PaulOverview
215ebcc0e6bSLyude Paul--------
2162fa91d15SJani Nikula
2172fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
2182fa91d15SJani Nikula   :doc: dp mst helper
2192fa91d15SJani Nikula
220ebcc0e6bSLyude Paul.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
221ebcc0e6bSLyude Paul   :doc: Branch device and port refcounting
222ebcc0e6bSLyude Paul
223ebcc0e6bSLyude PaulFunctions Reference
224ebcc0e6bSLyude Paul-------------------
225ebcc0e6bSLyude Paul
2262fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h
2272fa91d15SJani Nikula   :internal:
2282fa91d15SJani Nikula
2292fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
2302fa91d15SJani Nikula   :export:
2312fa91d15SJani Nikula
232ebcc0e6bSLyude PaulTopology Lifetime Internals
233ebcc0e6bSLyude Paul---------------------------
234ebcc0e6bSLyude Paul
235ebcc0e6bSLyude PaulThese functions aren't exported to drivers, but are documented here to help make
236ebcc0e6bSLyude Paulthe MST topology helpers easier to understand
237ebcc0e6bSLyude Paul
238ebcc0e6bSLyude Paul.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
239ebcc0e6bSLyude Paul   :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb
240ebcc0e6bSLyude Paul               drm_dp_mst_topology_put_mstb
241ebcc0e6bSLyude Paul               drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port
242ebcc0e6bSLyude Paul               drm_dp_mst_topology_put_port
243ebcc0e6bSLyude Paul               drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc
244ebcc0e6bSLyude Paul
2452fa91d15SJani NikulaMIPI DSI Helper Functions Reference
2462fa91d15SJani Nikula===================================
2472fa91d15SJani Nikula
2482fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
2492fa91d15SJani Nikula   :doc: dsi helpers
2502fa91d15SJani Nikula
2512fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h
2522fa91d15SJani Nikula   :internal:
2532fa91d15SJani Nikula
2542fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
2552fa91d15SJani Nikula   :export:
2562fa91d15SJani Nikula
257a408c857SManasi NavareDisplay Stream Compression Helper Functions Reference
258a408c857SManasi Navare=====================================================
259a408c857SManasi Navare
260a408c857SManasi Navare.. kernel-doc:: drivers/gpu/drm/drm_dsc.c
261a408c857SManasi Navare   :doc: dsc helpers
262a408c857SManasi Navare
263a408c857SManasi Navare.. kernel-doc:: include/drm/drm_dsc.h
264a408c857SManasi Navare   :internal:
265a408c857SManasi Navare
266a408c857SManasi Navare.. kernel-doc:: drivers/gpu/drm/drm_dsc.c
267a408c857SManasi Navare   :export:
268a408c857SManasi Navare
269bcb32b69SDaniel VetterOutput Probing Helper Functions Reference
270bcb32b69SDaniel Vetter=========================================
271bcb32b69SDaniel Vetter
272bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
273bcb32b69SDaniel Vetter   :doc: output probing helper overview
274bcb32b69SDaniel Vetter
275bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
276bcb32b69SDaniel Vetter   :export:
277bcb32b69SDaniel Vetter
2782fa91d15SJani NikulaEDID Helper Functions Reference
2792fa91d15SJani Nikula===============================
2802fa91d15SJani Nikula
281cdc3d09fSDaniel Vetter.. kernel-doc:: include/drm/drm_edid.h
282cdc3d09fSDaniel Vetter   :internal:
283cdc3d09fSDaniel Vetter
2842fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c
2852fa91d15SJani Nikula   :export:
2862fa91d15SJani Nikula
2873ad33ae2SThierry RedingSCDC Helper Functions Reference
2883ad33ae2SThierry Reding===============================
2893ad33ae2SThierry Reding
2903ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c
2913ad33ae2SThierry Reding   :doc: scdc helpers
2923ad33ae2SThierry Reding
2933ad33ae2SThierry Reding.. kernel-doc:: include/drm/drm_scdc_helper.h
2943ad33ae2SThierry Reding   :internal:
2953ad33ae2SThierry Reding
2963ad33ae2SThierry Reding.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c
2973ad33ae2SThierry Reding   :export:
2983ad33ae2SThierry Reding
2992fa91d15SJani NikulaRectangle Utilities Reference
3002fa91d15SJani Nikula=============================
3012fa91d15SJani Nikula
3022fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
3032fa91d15SJani Nikula   :doc: rect utils
3042fa91d15SJani Nikula
3052fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
3062fa91d15SJani Nikula   :internal:
3072fa91d15SJani Nikula
3082fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c
3092fa91d15SJani Nikula   :export:
3102fa91d15SJani Nikula
3112fa91d15SJani NikulaHDMI Infoframes Helper Reference
3122fa91d15SJani Nikula================================
3132fa91d15SJani Nikula
3142fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable
3152fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers.
3162fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper
3172fa91d15SJani Nikulalibraries and hence is also included here.
3182fa91d15SJani Nikula
3192fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h
3202fa91d15SJani Nikula   :internal:
3212fa91d15SJani Nikula
3222fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c
3232fa91d15SJani Nikula   :export:
3242fa91d15SJani Nikula
325bcb32b69SDaniel VetterFlip-work Helper Reference
326bcb32b69SDaniel Vetter==========================
327bcb32b69SDaniel Vetter
328bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
329bcb32b69SDaniel Vetter   :doc: flip utils
330bcb32b69SDaniel Vetter
331bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
332bcb32b69SDaniel Vetter   :internal:
333bcb32b69SDaniel Vetter
334bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
335bcb32b69SDaniel Vetter   :export:
336bcb32b69SDaniel Vetter
3371de72fafSDaniel VetterAuxiliary Modeset Helpers
3381de72fafSDaniel Vetter=========================
3391de72fafSDaniel Vetter
3401de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
3411de72fafSDaniel Vetter   :doc: aux kms helpers
3421de72fafSDaniel Vetter
3431de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
3441de72fafSDaniel Vetter   :export:
3454c3dbb2cSNoralf Trønnes
3467f9e7ec9SDaniel VetterOF/DT Helpers
3477f9e7ec9SDaniel Vetter=============
3487f9e7ec9SDaniel Vetter
3497f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c
3507f9e7ec9SDaniel Vetter   :doc: overview
3517f9e7ec9SDaniel Vetter
3527f9e7ec9SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_of.c
3537f9e7ec9SDaniel Vetter   :export:
3547f9e7ec9SDaniel Vetter
3555fca5eceSDaniel VetterLegacy Plane Helper Reference
3565fca5eceSDaniel Vetter=============================
3575fca5eceSDaniel Vetter
3585fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
3595fca5eceSDaniel Vetter   :doc: overview
3605fca5eceSDaniel Vetter
3615fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
3625fca5eceSDaniel Vetter   :export:
3635fca5eceSDaniel Vetter
3645fca5eceSDaniel VetterLegacy CRTC/Modeset Helper Functions Reference
3655fca5eceSDaniel Vetter==============================================
3665fca5eceSDaniel Vetter
3675fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
3685fca5eceSDaniel Vetter   :doc: overview
3695fca5eceSDaniel Vetter
3705fca5eceSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
3715fca5eceSDaniel Vetter   :export:
372