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