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 Chain Format Selection 175----------------------------- 176 177.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 178 :doc: bridge chain format selection 179 180Bridge Connector Helper 181----------------------- 182 183.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c 184 :doc: overview 185 186 187Bridge Helper Reference 188------------------------- 189 190.. kernel-doc:: include/drm/drm_bridge.h 191 :internal: 192 193.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 194 :export: 195 196MIPI-DSI bridge operation 197------------------------- 198 199.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 200 :doc: dsi bridge operations 201 202 203Bridge Connector Helper Reference 204--------------------------------- 205 206.. kernel-doc:: drivers/gpu/drm/display/drm_bridge_connector.c 207 :export: 208 209Panel-Bridge Helper Reference 210----------------------------- 211 212.. kernel-doc:: drivers/gpu/drm/bridge/panel.c 213 :export: 214 215.. _drm_panel_helper: 216 217Panel Helper Reference 218====================== 219 220.. kernel-doc:: drivers/gpu/drm/drm_panel.c 221 :doc: drm panel 222 223.. kernel-doc:: include/drm/drm_panel.h 224 :internal: 225 226.. kernel-doc:: drivers/gpu/drm/drm_panel.c 227 :export: 228 229.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c 230 :export: 231 232.. kernel-doc:: drivers/gpu/drm/drm_panel_backlight_quirks.c 233 :export: 234 235Panel Self Refresh Helper Reference 236=================================== 237 238.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 239 :doc: overview 240 241.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 242 :export: 243 244HDMI Atomic State Helpers 245========================= 246 247Overview 248-------- 249 250.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c 251 :doc: hdmi helpers 252 253Functions Reference 254------------------- 255 256.. kernel-doc:: drivers/gpu/drm/display/drm_hdmi_state_helper.c 257 :export: 258 259HDCP Helper Functions Reference 260=============================== 261 262.. kernel-doc:: drivers/gpu/drm/display/drm_hdcp_helper.c 263 :export: 264 265Display Port Helper Functions Reference 266======================================= 267 268.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c 269 :doc: dp helpers 270 271.. kernel-doc:: include/drm/display/drm_dp.h 272 :internal: 273 274.. kernel-doc:: include/drm/display/drm_dp_helper.h 275 :internal: 276 277.. kernel-doc:: drivers/gpu/drm/display/drm_dp_helper.c 278 :export: 279 280Display Port CEC Helper Functions Reference 281=========================================== 282 283.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c 284 :doc: dp cec helpers 285 286.. kernel-doc:: drivers/gpu/drm/display/drm_dp_cec.c 287 :export: 288 289Display Port Dual Mode Adaptor Helper Functions Reference 290========================================================= 291 292.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c 293 :doc: dp dual mode helpers 294 295.. kernel-doc:: include/drm/display/drm_dp_dual_mode_helper.h 296 :internal: 297 298.. kernel-doc:: drivers/gpu/drm/display/drm_dp_dual_mode_helper.c 299 :export: 300 301Display Port MST Helpers 302======================== 303 304Overview 305-------- 306 307.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 308 :doc: dp mst helper 309 310.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 311 :doc: Branch device and port refcounting 312 313Functions Reference 314------------------- 315 316.. kernel-doc:: include/drm/display/drm_dp_mst_helper.h 317 :internal: 318 319.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 320 :export: 321 322Topology Lifetime Internals 323--------------------------- 324 325These functions aren't exported to drivers, but are documented here to help make 326the MST topology helpers easier to understand 327 328.. kernel-doc:: drivers/gpu/drm/display/drm_dp_mst_topology.c 329 :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb 330 drm_dp_mst_topology_put_mstb 331 drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port 332 drm_dp_mst_topology_put_port 333 drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc 334 335MIPI DBI Helper Functions Reference 336=================================== 337 338.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 339 :doc: overview 340 341.. kernel-doc:: include/drm/drm_mipi_dbi.h 342 :internal: 343 344.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 345 :export: 346 347MIPI DSI Helper Functions Reference 348=================================== 349 350.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 351 :doc: dsi helpers 352 353.. kernel-doc:: include/drm/drm_mipi_dsi.h 354 :internal: 355 356.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 357 :export: 358 359Display Stream Compression Helper Functions Reference 360===================================================== 361 362.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c 363 :doc: dsc helpers 364 365.. kernel-doc:: include/drm/display/drm_dsc.h 366 :internal: 367 368.. kernel-doc:: drivers/gpu/drm/display/drm_dsc_helper.c 369 :export: 370 371Output Probing Helper Functions Reference 372========================================= 373 374.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 375 :doc: output probing helper overview 376 377.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 378 :export: 379 380EDID Helper Functions Reference 381=============================== 382 383.. kernel-doc:: include/drm/drm_edid.h 384 :internal: 385 386.. kernel-doc:: drivers/gpu/drm/drm_edid.c 387 :export: 388 389.. kernel-doc:: include/drm/drm_eld.h 390 :internal: 391 392.. kernel-doc:: drivers/gpu/drm/drm_eld.c 393 :export: 394 395SCDC Helper Functions Reference 396=============================== 397 398.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c 399 :doc: scdc helpers 400 401.. kernel-doc:: include/drm/display/drm_scdc_helper.h 402 :internal: 403 404.. kernel-doc:: drivers/gpu/drm/display/drm_scdc_helper.c 405 :export: 406 407HDMI Infoframes Helper Reference 408================================ 409 410Strictly speaking this is not a DRM helper library but generally usable 411by any driver interfacing with HDMI outputs like v4l or alsa drivers. 412But it nicely fits into the overall topic of mode setting helper 413libraries and hence is also included here. 414 415.. kernel-doc:: include/linux/hdmi.h 416 :internal: 417 418.. kernel-doc:: drivers/video/hdmi.c 419 :export: 420 421Rectangle Utilities Reference 422============================= 423 424.. kernel-doc:: include/drm/drm_rect.h 425 :doc: rect utils 426 427.. kernel-doc:: include/drm/drm_rect.h 428 :internal: 429 430.. kernel-doc:: drivers/gpu/drm/drm_rect.c 431 :export: 432 433Flip-work Helper Reference 434========================== 435 436.. kernel-doc:: include/drm/drm_flip_work.h 437 :doc: flip utils 438 439.. kernel-doc:: include/drm/drm_flip_work.h 440 :internal: 441 442.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c 443 :export: 444 445Auxiliary Modeset Helpers 446========================= 447 448.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 449 :doc: aux kms helpers 450 451.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 452 :export: 453 454OF/DT Helpers 455============= 456 457.. kernel-doc:: drivers/gpu/drm/drm_of.c 458 :doc: overview 459 460.. kernel-doc:: drivers/gpu/drm/drm_of.c 461 :export: 462 463Legacy Plane Helper Reference 464============================= 465 466.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 467 :doc: overview 468 469.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 470 :export: 471 472Legacy CRTC/Modeset Helper Functions Reference 473============================================== 474 475.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 476 :doc: overview 477 478.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 479 :export: 480 481Privacy-screen class 482==================== 483 484.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c 485 :doc: overview 486 487.. kernel-doc:: include/drm/drm_privacy_screen_driver.h 488 :internal: 489 490.. kernel-doc:: include/drm/drm_privacy_screen_machine.h 491 :internal: 492 493.. kernel-doc:: drivers/gpu/drm/drm_privacy_screen.c 494 :export: 495