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
129bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
130bcb32b69SDaniel Vetter   :export:
131bcb32b69SDaniel Vetter
132bcb32b69SDaniel VetterPanel Helper Reference
133bcb32b69SDaniel Vetter======================
134bcb32b69SDaniel Vetter
135bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_panel.h
136bcb32b69SDaniel Vetter   :internal:
137bcb32b69SDaniel Vetter
138bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c
139bcb32b69SDaniel Vetter   :export:
140bcb32b69SDaniel Vetter
141bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_panel.c
142bcb32b69SDaniel Vetter   :doc: drm panel
143bcb32b69SDaniel Vetter
1442fa91d15SJani NikulaDisplay Port Helper Functions Reference
1452fa91d15SJani Nikula=======================================
1462fa91d15SJani Nikula
1472fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1482fa91d15SJani Nikula   :doc: dp helpers
1492fa91d15SJani Nikula
1502fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_helper.h
1512fa91d15SJani Nikula   :internal:
1522fa91d15SJani Nikula
1532fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1542fa91d15SJani Nikula   :export:
1552fa91d15SJani Nikula
1562fa91d15SJani NikulaDisplay Port Dual Mode Adaptor Helper Functions Reference
1572fa91d15SJani Nikula=========================================================
1582fa91d15SJani Nikula
1592fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
1602fa91d15SJani Nikula   :doc: dp dual mode helpers
1612fa91d15SJani Nikula
1622fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h
1632fa91d15SJani Nikula   :internal:
1642fa91d15SJani Nikula
1652fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
1662fa91d15SJani Nikula   :export:
1672fa91d15SJani Nikula
1682fa91d15SJani NikulaDisplay Port MST Helper Functions Reference
1692fa91d15SJani Nikula===========================================
1702fa91d15SJani Nikula
1712fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
1722fa91d15SJani Nikula   :doc: dp mst helper
1732fa91d15SJani Nikula
1742fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h
1752fa91d15SJani Nikula   :internal:
1762fa91d15SJani Nikula
1772fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
1782fa91d15SJani Nikula   :export:
1792fa91d15SJani Nikula
1802fa91d15SJani NikulaMIPI DSI Helper Functions Reference
1812fa91d15SJani Nikula===================================
1822fa91d15SJani Nikula
1832fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
1842fa91d15SJani Nikula   :doc: dsi helpers
1852fa91d15SJani Nikula
1862fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h
1872fa91d15SJani Nikula   :internal:
1882fa91d15SJani Nikula
1892fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
1902fa91d15SJani Nikula   :export:
1912fa91d15SJani Nikula
192bcb32b69SDaniel VetterOutput Probing Helper Functions Reference
193bcb32b69SDaniel Vetter=========================================
194bcb32b69SDaniel Vetter
195bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
196bcb32b69SDaniel Vetter   :doc: output probing helper overview
197bcb32b69SDaniel Vetter
198bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
199bcb32b69SDaniel Vetter   :export:
200bcb32b69SDaniel Vetter
2012fa91d15SJani NikulaEDID Helper Functions Reference
2022fa91d15SJani Nikula===============================
2032fa91d15SJani Nikula
2042fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c
2052fa91d15SJani Nikula   :export:
2062fa91d15SJani Nikula
2072fa91d15SJani NikulaRectangle Utilities Reference
2082fa91d15SJani Nikula=============================
2092fa91d15SJani Nikula
2102fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
2112fa91d15SJani Nikula   :doc: rect utils
2122fa91d15SJani Nikula
2132fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
2142fa91d15SJani Nikula   :internal:
2152fa91d15SJani Nikula
2162fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c
2172fa91d15SJani Nikula   :export:
2182fa91d15SJani Nikula
2192fa91d15SJani NikulaHDMI Infoframes Helper Reference
2202fa91d15SJani Nikula================================
2212fa91d15SJani Nikula
2222fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable
2232fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers.
2242fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper
2252fa91d15SJani Nikulalibraries and hence is also included here.
2262fa91d15SJani Nikula
2272fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h
2282fa91d15SJani Nikula   :internal:
2292fa91d15SJani Nikula
2302fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c
2312fa91d15SJani Nikula   :export:
2322fa91d15SJani Nikula
233bcb32b69SDaniel VetterFlip-work Helper Reference
234bcb32b69SDaniel Vetter==========================
235bcb32b69SDaniel Vetter
236bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
237bcb32b69SDaniel Vetter   :doc: flip utils
238bcb32b69SDaniel Vetter
239bcb32b69SDaniel Vetter.. kernel-doc:: include/drm/drm_flip_work.h
240bcb32b69SDaniel Vetter   :internal:
241bcb32b69SDaniel Vetter
242bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
243bcb32b69SDaniel Vetter   :export:
244bcb32b69SDaniel Vetter
2452fa91d15SJani NikulaPlane Helper Reference
2462fa91d15SJani Nikula======================
2472fa91d15SJani Nikula
2482fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
2492fa91d15SJani Nikula   :doc: overview
2502fa91d15SJani Nikula
251bcb32b69SDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
252bcb32b69SDaniel Vetter   :export:
253bcb32b69SDaniel Vetter
2542fa91d15SJani NikulaTile group
255bcb32b69SDaniel Vetter==========
256bcb32b69SDaniel Vetter
257bcb32b69SDaniel Vetter# FIXME: This should probably be moved into a property documentation section
2582fa91d15SJani Nikula
2592fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc.c
2602fa91d15SJani Nikula   :doc: Tile group
2611de72fafSDaniel Vetter
2621de72fafSDaniel VetterAuxiliary Modeset Helpers
2631de72fafSDaniel Vetter=========================
2641de72fafSDaniel Vetter
2651de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
2661de72fafSDaniel Vetter   :doc: aux kms helpers
2671de72fafSDaniel Vetter
2681de72fafSDaniel Vetter.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c
2691de72fafSDaniel Vetter   :export:
270