1============================= 2Mode Setting Helper Functions 3============================= 4 5The DRM subsystem aims for a strong separation between core code and helper 6libraries. Core code takes care of general setup and teardown and decoding 7userspace requests to kernel internal objects. Everything else is handled by a 8large set of helper libraries, which can be combined freely to pick and choose 9for each driver what fits, and avoid shared code where special behaviour is 10needed. 11 12This distinction between core code and helpers is especially strong in the 13modesetting code, where there's a shared userspace ABI for all drivers. This is 14in contrast to the render side, where pretty much everything (with very few 15exceptions) can be considered optional helper code. 16 17There are a few areas these helpers can grouped into: 18 19* Helpers to implement modesetting. The important ones here are the atomic 20 helpers. Old drivers still often use the legacy CRTC helpers. They both share 21 the same set of common helper vtables. For really simple drivers (anything 22 that would have been a great fit in the deprecated fbdev subsystem) there's 23 also the simple display pipe helpers. 24 25* There's a big pile of helpers for handling outputs. First the generic bridge 26 helpers for handling encoder and transcoder IP blocks. Second the panel helpers 27 for handling panel-related information and logic. Plus then a big set of 28 helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally 29 there's also generic helpers for handling output probing, and for dealing with 30 EDIDs. 31 32* The last group of helpers concerns itself with the frontend side of a display 33 pipeline: Planes, handling rectangles for visibility checking and scissoring, 34 flip queues and assorted bits. 35 36.. contents:: 37 38Modeset Helper Reference for Common Vtables 39=========================================== 40 41.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 42 :doc: overview 43 44.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 45 :internal: 46 47.. _drm_atomic_helper: 48 49Atomic Modeset Helper Functions Reference 50========================================= 51 52Overview 53-------- 54 55.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 56 :doc: overview 57 58Implementing Asynchronous Atomic Commit 59--------------------------------------- 60 61.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 62 :doc: implementing nonblocking commit 63 64Helper Functions Reference 65-------------------------- 66 67.. kernel-doc:: include/drm/drm_atomic_helper.h 68 :internal: 69 70.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 71 :export: 72 73Atomic State Reset and Initialization 74------------------------------------- 75 76.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 77 :doc: atomic state reset and initialization 78 79Atomic State Helper Reference 80----------------------------- 81 82.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 83 :export: 84 85GEM Atomic Helper Reference 86--------------------------- 87 88.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c 89 :doc: overview 90 91.. kernel-doc:: include/drm/drm_gem_atomic_helper.h 92 :internal: 93 94.. kernel-doc:: drivers/gpu/drm/drm_gem_atomic_helper.c 95 :export: 96 97VBLANK Helper Reference 98----------------------- 99 100.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c 101 :doc: overview 102 103.. kernel-doc:: include/drm/drm_vblank_helper.h 104 :internal: 105 106.. kernel-doc:: drivers/gpu/drm/drm_vblank_helper.c 107 :export: 108 109fbdev Helper Functions Reference 110================================ 111 112.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 113 :doc: fbdev helpers 114 115.. kernel-doc:: include/drm/drm_fb_helper.h 116 :internal: 117 118.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 119 :export: 120 121format Helper Functions Reference 122================================= 123 124.. kernel-doc:: drivers/gpu/drm/drm_format_helper.c 125 :export: 126 127Framebuffer DMA Helper Functions Reference 128========================================== 129 130.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c 131 :doc: framebuffer dma helper functions 132 133.. kernel-doc:: drivers/gpu/drm/drm_fb_dma_helper.c 134 :export: 135 136Framebuffer GEM Helper Reference 137================================ 138 139.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 140 :doc: overview 141 142.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 143 :export: 144 145.. _drm_bridges: 146 147Bridges 148======= 149 150Overview 151-------- 152 153.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 154 :doc: overview 155 156Display Driver Integration 157-------------------------- 158 159.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 160 :doc: display driver integration 161 162Special Care with MIPI-DSI bridges 163---------------------------------- 164 165.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 166 :doc: special care dsi 167 168Bridge Operations 169----------------- 170 171.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 172 :doc: bridge operations 173 174Bridge Connector Helper 175----------------------- 176 177.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c 178 :doc: overview 179 180 181Bridge Helper Reference 182------------------------- 183 184.. kernel-doc:: include/drm/drm_bridge.h 185 :internal: 186 187.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 188 :export: 189 190MIPI-DSI bridge operation 191------------------------- 192 193.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 194 :doc: dsi bridge operations 195 196 197Bridge Connector Helper Reference 198--------------------------------- 199 200.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c 201 :export: 202 203Panel-Bridge Helper Reference 204----------------------------- 205 206.. kernel-doc:: drivers/gpu/drm/bridge/panel.c 207 :export: 208 209.. _drm_panel_helper: 210 211Panel Helper Reference 212====================== 213 214.. kernel-doc:: drivers/gpu/drm/drm_panel.c 215 :doc: drm panel 216 217.. kernel-doc:: include/drm/drm_panel.h 218 :internal: 219 220.. kernel-doc:: drivers/gpu/drm/drm_panel.c 221 :export: 222 223.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c 224 :export: 225 226.. kernel-doc:: drivers/gpu/drm/drm_panel_backlight_quirks.c 227 :export: 228 229Panel Self Refresh Helper Reference 230=================================== 231 232.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 233 :doc: overview 234 235.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 236 :export: 237 238HDMI Atomic State Helpers 239========================= 240 241Overview 242-------- 243 244.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c 245 :doc: hdmi helpers 246 247Functions Reference 248------------------- 249 250.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c 251 :export: 252 253HDCP Helper Functions Reference 254=============================== 255 256.. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c 257 :export: 258 259Display Port Helper Functions Reference 260======================================= 261 262.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c 263 :doc: dp helpers 264 265.. kernel-doc:: include/drm/display/drm_dp.h 266 :internal: 267 268.. kernel-doc:: include/drm/display/drm_dp_helper.h 269 :internal: 270 271.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c 272 :export: 273 274Display Port CEC Helper Functions Reference 275=========================================== 276 277.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c 278 :doc: dp cec helpers 279 280.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c 281 :export: 282 283Display Port Dual Mode Adaptor Helper Functions Reference 284========================================================= 285 286.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c 287 :doc: dp dual mode helpers 288 289.. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h 290 :internal: 291 292.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c 293 :export: 294 295Display Port MST Helpers 296======================== 297 298Overview 299-------- 300 301.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 302 :doc: dp mst helper 303 304.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 305 :doc: Branch device and port refcounting 306 307Functions Reference 308------------------- 309 310.. kernel-doc:: include/drm/display/drm_dp_mst_helper.h 311 :internal: 312 313.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 314 :export: 315 316Topology Lifetime Internals 317--------------------------- 318 319These functions aren't exported to drivers, but are documented here to help make 320the MST topology helpers easier to understand 321 322.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 323 :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb 324 drm_dp_mst_topology_put_mstb 325 drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port 326 drm_dp_mst_topology_put_port 327 drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc 328 329MIPI DBI Helper Functions Reference 330=================================== 331 332.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 333 :doc: overview 334 335.. kernel-doc:: include/drm/drm_mipi_dbi.h 336 :internal: 337 338.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 339 :export: 340 341MIPI DSI Helper Functions Reference 342=================================== 343 344.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 345 :doc: dsi helpers 346 347.. kernel-doc:: include/drm/drm_mipi_dsi.h 348 :internal: 349 350.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 351 :export: 352 353Display Stream Compression Helper Functions Reference 354===================================================== 355 356.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c 357 :doc: dsc helpers 358 359.. kernel-doc:: include/drm/display/drm_dsc.h 360 :internal: 361 362.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c 363 :export: 364 365Output Probing Helper Functions Reference 366========================================= 367 368.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 369 :doc: output probing helper overview 370 371.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 372 :export: 373 374EDID Helper Functions Reference 375=============================== 376 377.. kernel-doc:: include/drm/drm_edid.h 378 :internal: 379 380.. kernel-doc:: drivers/gpu/drm/drm_edid.c 381 :export: 382 383.. kernel-doc:: include/drm/drm_eld.h 384 :internal: 385 386.. kernel-doc:: drivers/gpu/drm/drm_eld.c 387 :export: 388 389SCDC Helper Functions Reference 390=============================== 391 392.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c 393 :doc: scdc helpers 394 395.. kernel-doc:: include/drm/display/drm_scdc_helper.h 396 :internal: 397 398.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c 399 :export: 400 401HDMI Infoframes Helper Reference 402================================ 403 404Strictly speaking this is not a DRM helper library but generally usable 405by any driver interfacing with HDMI outputs like v4l or alsa drivers. 406But it nicely fits into the overall topic of mode setting helper 407libraries and hence is also included here. 408 409.. kernel-doc:: include/linux/hdmi.h 410 :internal: 411 412.. kernel-doc:: drivers/video/hdmi.c 413 :export: 414 415Rectangle Utilities Reference 416============================= 417 418.. kernel-doc:: include/drm/drm_rect.h 419 :doc: rect utils 420 421.. kernel-doc:: include/drm/drm_rect.h 422 :internal: 423 424.. kernel-doc:: drivers/gpu/drm/drm_rect.c 425 :export: 426 427Flip-work Helper Reference 428========================== 429 430.. kernel-doc:: include/drm/drm_flip_work.h 431 :doc: flip utils 432 433.. kernel-doc:: include/drm/drm_flip_work.h 434 :internal: 435 436.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c 437 :export: 438 439Auxiliary Modeset Helpers 440========================= 441 442.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 443 :doc: aux kms helpers 444 445.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 446 :export: 447 448OF/DT Helpers 449============= 450 451.. kernel-doc:: drivers/gpu/drm/drm_of.c 452 :doc: overview 453 454.. kernel-doc:: drivers/gpu/drm/drm_of.c 455 :export: 456 457Legacy Plane Helper Reference 458============================= 459 460.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 461 :doc: overview 462 463.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 464 :export: 465 466Legacy CRTC/Modeset Helper Functions Reference 467============================================== 468 469.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 470 :doc: overview 471 472.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 473 :export: 474 475Privacy-screen class 476==================== 477 478.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c 479 :doc: overview 480 481.. kernel-doc:: include/drm/drm_privacy_screen_driver.h 482 :internal: 483 484.. kernel-doc:: include/drm/drm_privacy_screen_machine.h 485 :internal: 486 487.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c 488 :export: 489