12fa91d15SJani Nikula=============================
22fa91d15SJani NikulaMode Setting Helper Functions
32fa91d15SJani Nikula=============================
42fa91d15SJani Nikula
52fa91d15SJani NikulaThe plane, CRTC, encoder and connector functions provided by the drivers
62fa91d15SJani Nikulaimplement the DRM API. They're called by the DRM core and ioctl handlers
72fa91d15SJani Nikulato handle device state changes and configuration request. As
82fa91d15SJani Nikulaimplementing those functions often requires logic not specific to
92fa91d15SJani Nikuladrivers, mid-layer helper functions are available to avoid duplicating
102fa91d15SJani Nikulaboilerplate code.
112fa91d15SJani Nikula
122fa91d15SJani NikulaThe DRM core contains one mid-layer implementation. The mid-layer
132fa91d15SJani Nikulaprovides implementations of several plane, CRTC, encoder and connector
142fa91d15SJani Nikulafunctions (called from the top of the mid-layer) that pre-process
152fa91d15SJani Nikularequests and call lower-level functions provided by the driver (at the
162fa91d15SJani Nikulabottom of the mid-layer). For instance, the
172fa91d15SJani Nikula:c:func:`drm_crtc_helper_set_config()` function can be used to
182fa91d15SJani Nikulafill the :c:type:`struct drm_crtc_funcs <drm_crtc_funcs>`
192fa91d15SJani Nikulaset_config field. When called, it will split the set_config operation
202fa91d15SJani Nikulain smaller, simpler operations and call the driver to handle them.
212fa91d15SJani Nikula
222fa91d15SJani NikulaTo use the mid-layer, drivers call
232fa91d15SJani Nikula:c:func:`drm_crtc_helper_add()`,
242fa91d15SJani Nikula:c:func:`drm_encoder_helper_add()` and
252fa91d15SJani Nikula:c:func:`drm_connector_helper_add()` functions to install their
262fa91d15SJani Nikulamid-layer bottom operations handlers, and fill the :c:type:`struct
272fa91d15SJani Nikuladrm_crtc_funcs <drm_crtc_funcs>`, :c:type:`struct
282fa91d15SJani Nikuladrm_encoder_funcs <drm_encoder_funcs>` and :c:type:`struct
292fa91d15SJani Nikuladrm_connector_funcs <drm_connector_funcs>` structures with
302fa91d15SJani Nikulapointers to the mid-layer top API functions. Installing the mid-layer
312fa91d15SJani Nikulabottom operation handlers is best done right after registering the
322fa91d15SJani Nikulacorresponding KMS object.
332fa91d15SJani Nikula
342fa91d15SJani NikulaThe mid-layer is not split between CRTC, encoder and connector
352fa91d15SJani Nikulaoperations. To use it, a driver must provide bottom functions for all of
362fa91d15SJani Nikulathe three KMS entities.
372fa91d15SJani Nikula
382fa91d15SJani NikulaAtomic Modeset Helper Functions Reference
392fa91d15SJani Nikula=========================================
402fa91d15SJani Nikula
412fa91d15SJani NikulaOverview
422fa91d15SJani Nikula--------
432fa91d15SJani Nikula
442fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
452fa91d15SJani Nikula   :doc: overview
462fa91d15SJani Nikula
472fa91d15SJani NikulaImplementing Asynchronous Atomic Commit
482fa91d15SJani Nikula---------------------------------------
492fa91d15SJani Nikula
502fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
512fa91d15SJani Nikula   :doc: implementing nonblocking commit
522fa91d15SJani Nikula
532fa91d15SJani NikulaAtomic State Reset and Initialization
542fa91d15SJani Nikula-------------------------------------
552fa91d15SJani Nikula
562fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
572fa91d15SJani Nikula   :doc: atomic state reset and initialization
582fa91d15SJani Nikula
592fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_atomic_helper.h
602fa91d15SJani Nikula   :internal:
612fa91d15SJani Nikula
622fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c
632fa91d15SJani Nikula   :export:
642fa91d15SJani Nikula
652fa91d15SJani NikulaModeset Helper Reference for Common Vtables
662fa91d15SJani Nikula===========================================
672fa91d15SJani Nikula
682fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
692fa91d15SJani Nikula   :internal:
702fa91d15SJani Nikula
712fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h
722fa91d15SJani Nikula   :doc: overview
732fa91d15SJani Nikula
742fa91d15SJani NikulaLegacy CRTC/Modeset Helper Functions Reference
752fa91d15SJani Nikula==============================================
762fa91d15SJani Nikula
772fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
782fa91d15SJani Nikula   :export:
792fa91d15SJani Nikula
802fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c
812fa91d15SJani Nikula   :doc: overview
822fa91d15SJani Nikula
832fa91d15SJani NikulaOutput Probing Helper Functions Reference
842fa91d15SJani Nikula=========================================
852fa91d15SJani Nikula
862fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
872fa91d15SJani Nikula   :doc: output probing helper overview
882fa91d15SJani Nikula
892fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c
902fa91d15SJani Nikula   :export:
912fa91d15SJani Nikula
922fa91d15SJani Nikulafbdev Helper Functions Reference
932fa91d15SJani Nikula================================
942fa91d15SJani Nikula
952fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
962fa91d15SJani Nikula   :doc: fbdev helpers
972fa91d15SJani Nikula
982fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c
992fa91d15SJani Nikula   :export:
1002fa91d15SJani Nikula
1012fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_fb_helper.h
1022fa91d15SJani Nikula   :internal:
1032fa91d15SJani Nikula
1042fa91d15SJani NikulaFramebuffer CMA Helper Functions Reference
1052fa91d15SJani Nikula==========================================
1062fa91d15SJani Nikula
1072fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
1082fa91d15SJani Nikula   :doc: framebuffer cma helper functions
1092fa91d15SJani Nikula
1102fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c
1112fa91d15SJani Nikula   :export:
1122fa91d15SJani Nikula
1132fa91d15SJani NikulaDisplay Port Helper Functions Reference
1142fa91d15SJani Nikula=======================================
1152fa91d15SJani Nikula
1162fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1172fa91d15SJani Nikula   :doc: dp helpers
1182fa91d15SJani Nikula
1192fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_helper.h
1202fa91d15SJani Nikula   :internal:
1212fa91d15SJani Nikula
1222fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c
1232fa91d15SJani Nikula   :export:
1242fa91d15SJani Nikula
1252fa91d15SJani NikulaDisplay Port Dual Mode Adaptor Helper Functions Reference
1262fa91d15SJani Nikula=========================================================
1272fa91d15SJani Nikula
1282fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
1292fa91d15SJani Nikula   :doc: dp dual mode helpers
1302fa91d15SJani Nikula
1312fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h
1322fa91d15SJani Nikula   :internal:
1332fa91d15SJani Nikula
1342fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c
1352fa91d15SJani Nikula   :export:
1362fa91d15SJani Nikula
1372fa91d15SJani NikulaDisplay Port MST Helper Functions Reference
1382fa91d15SJani Nikula===========================================
1392fa91d15SJani Nikula
1402fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
1412fa91d15SJani Nikula   :doc: dp mst helper
1422fa91d15SJani Nikula
1432fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_dp_mst_helper.h
1442fa91d15SJani Nikula   :internal:
1452fa91d15SJani Nikula
1462fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c
1472fa91d15SJani Nikula   :export:
1482fa91d15SJani Nikula
1492fa91d15SJani NikulaMIPI DSI Helper Functions Reference
1502fa91d15SJani Nikula===================================
1512fa91d15SJani Nikula
1522fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
1532fa91d15SJani Nikula   :doc: dsi helpers
1542fa91d15SJani Nikula
1552fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_mipi_dsi.h
1562fa91d15SJani Nikula   :internal:
1572fa91d15SJani Nikula
1582fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c
1592fa91d15SJani Nikula   :export:
1602fa91d15SJani Nikula
1612fa91d15SJani NikulaEDID Helper Functions Reference
1622fa91d15SJani Nikula===============================
1632fa91d15SJani Nikula
1642fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_edid.c
1652fa91d15SJani Nikula   :export:
1662fa91d15SJani Nikula
1672fa91d15SJani NikulaRectangle Utilities Reference
1682fa91d15SJani Nikula=============================
1692fa91d15SJani Nikula
1702fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
1712fa91d15SJani Nikula   :doc: rect utils
1722fa91d15SJani Nikula
1732fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_rect.h
1742fa91d15SJani Nikula   :internal:
1752fa91d15SJani Nikula
1762fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_rect.c
1772fa91d15SJani Nikula   :export:
1782fa91d15SJani Nikula
1792fa91d15SJani NikulaFlip-work Helper Reference
1802fa91d15SJani Nikula==========================
1812fa91d15SJani Nikula
1822fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_flip_work.h
1832fa91d15SJani Nikula   :doc: flip utils
1842fa91d15SJani Nikula
1852fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_flip_work.h
1862fa91d15SJani Nikula   :internal:
1872fa91d15SJani Nikula
1882fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c
1892fa91d15SJani Nikula   :export:
1902fa91d15SJani Nikula
1912fa91d15SJani NikulaHDMI Infoframes Helper Reference
1922fa91d15SJani Nikula================================
1932fa91d15SJani Nikula
1942fa91d15SJani NikulaStrictly speaking this is not a DRM helper library but generally useable
1952fa91d15SJani Nikulaby any driver interfacing with HDMI outputs like v4l or alsa drivers.
1962fa91d15SJani NikulaBut it nicely fits into the overall topic of mode setting helper
1972fa91d15SJani Nikulalibraries and hence is also included here.
1982fa91d15SJani Nikula
1992fa91d15SJani Nikula.. kernel-doc:: include/linux/hdmi.h
2002fa91d15SJani Nikula   :internal:
2012fa91d15SJani Nikula
2022fa91d15SJani Nikula.. kernel-doc:: drivers/video/hdmi.c
2032fa91d15SJani Nikula   :export:
2042fa91d15SJani Nikula
2052fa91d15SJani NikulaPlane Helper Reference
2062fa91d15SJani Nikula======================
2072fa91d15SJani Nikula
2082fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
2092fa91d15SJani Nikula   :export:
2102fa91d15SJani Nikula
2112fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c
2122fa91d15SJani Nikula   :doc: overview
2132fa91d15SJani Nikula
2142fa91d15SJani NikulaTile group
2152fa91d15SJani Nikula----------
2162fa91d15SJani Nikula
2172fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_crtc.c
2182fa91d15SJani Nikula   :doc: Tile group
2192fa91d15SJani Nikula
2202fa91d15SJani NikulaBridges
2212fa91d15SJani Nikula=======
2222fa91d15SJani Nikula
2232fa91d15SJani NikulaOverview
2242fa91d15SJani Nikula--------
2252fa91d15SJani Nikula
2262fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
2272fa91d15SJani Nikula   :doc: overview
2282fa91d15SJani Nikula
2292fa91d15SJani NikulaDefault bridge callback sequence
2302fa91d15SJani Nikula--------------------------------
2312fa91d15SJani Nikula
2322fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
2332fa91d15SJani Nikula   :doc: bridge callbacks
2342fa91d15SJani Nikula
2352fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_bridge.c
2362fa91d15SJani Nikula   :export:
2372fa91d15SJani Nikula
2382fa91d15SJani NikulaPanel Helper Reference
2392fa91d15SJani Nikula======================
2402fa91d15SJani Nikula
2412fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_panel.h
2422fa91d15SJani Nikula   :internal:
2432fa91d15SJani Nikula
2442fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_panel.c
2452fa91d15SJani Nikula   :export:
2462fa91d15SJani Nikula
2472fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_panel.c
2482fa91d15SJani Nikula   :doc: drm panel
2492fa91d15SJani Nikula
2502fa91d15SJani NikulaSimple KMS Helper Reference
2512fa91d15SJani Nikula===========================
2522fa91d15SJani Nikula
2532fa91d15SJani Nikula.. kernel-doc:: include/drm/drm_simple_kms_helper.h
2542fa91d15SJani Nikula   :internal:
2552fa91d15SJani Nikula
2562fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
2572fa91d15SJani Nikula   :export:
2582fa91d15SJani Nikula
2592fa91d15SJani Nikula.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c
2602fa91d15SJani Nikula   :doc: overview
261