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 36Modeset Helper Reference for Common Vtables 37=========================================== 38 39.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 40 :doc: overview 41 42.. kernel-doc:: include/drm/drm_modeset_helper_vtables.h 43 :internal: 44 45.. _drm_atomic_helper: 46 47Atomic Modeset Helper Functions Reference 48========================================= 49 50Overview 51-------- 52 53.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 54 :doc: overview 55 56Implementing Asynchronous Atomic Commit 57--------------------------------------- 58 59.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 60 :doc: implementing nonblocking commit 61 62Helper Functions Reference 63-------------------------- 64 65.. kernel-doc:: include/drm/drm_atomic_helper.h 66 :internal: 67 68.. kernel-doc:: drivers/gpu/drm/drm_atomic_helper.c 69 :export: 70 71Atomic State Reset and Initialization 72------------------------------------- 73 74.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 75 :doc: atomic state reset and initialization 76 77Atomic State Helper Reference 78----------------------------- 79 80.. kernel-doc:: include/drm/drm_atomic_state_helper.h 81 :internal: 82 83.. kernel-doc:: drivers/gpu/drm/drm_atomic_state_helper.c 84 :export: 85 86Simple KMS Helper Reference 87=========================== 88 89.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 90 :doc: overview 91 92.. kernel-doc:: include/drm/drm_simple_kms_helper.h 93 :internal: 94 95.. kernel-doc:: drivers/gpu/drm/drm_simple_kms_helper.c 96 :export: 97 98fbdev Helper Functions Reference 99================================ 100 101.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 102 :doc: fbdev helpers 103 104.. kernel-doc:: include/drm/drm_fb_helper.h 105 :internal: 106 107.. kernel-doc:: drivers/gpu/drm/drm_fb_helper.c 108 :export: 109 110format Helper Functions Reference 111================================= 112 113.. kernel-doc:: drivers/gpu/drm/drm_format_helper.c 114 :export: 115 116Framebuffer CMA Helper Functions Reference 117========================================== 118 119.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 120 :doc: framebuffer cma helper functions 121 122.. kernel-doc:: drivers/gpu/drm/drm_fb_cma_helper.c 123 :export: 124 125Framebuffer GEM Helper Reference 126================================ 127 128.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 129 :doc: overview 130 131.. kernel-doc:: drivers/gpu/drm/drm_gem_framebuffer_helper.c 132 :export: 133 134.. _drm_bridges: 135 136Bridges 137======= 138 139Overview 140-------- 141 142.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 143 :doc: overview 144 145Default bridge callback sequence 146-------------------------------- 147 148.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 149 :doc: bridge callbacks 150 151 152Bridge Helper Reference 153------------------------- 154 155.. kernel-doc:: include/drm/drm_bridge.h 156 :internal: 157 158.. kernel-doc:: drivers/gpu/drm/drm_bridge.c 159 :export: 160 161Panel-Bridge Helper Reference 162----------------------------- 163 164.. kernel-doc:: drivers/gpu/drm/bridge/panel.c 165 :export: 166 167.. _drm_panel_helper: 168 169Panel Helper Reference 170====================== 171 172.. kernel-doc:: drivers/gpu/drm/drm_panel.c 173 :doc: drm panel 174 175.. kernel-doc:: include/drm/drm_panel.h 176 :internal: 177 178.. kernel-doc:: drivers/gpu/drm/drm_panel.c 179 :export: 180 181.. kernel-doc:: drivers/gpu/drm/drm_panel_orientation_quirks.c 182 :export: 183 184Panel Self Refresh Helper Reference 185=================================== 186 187.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 188 :doc: overview 189 190.. kernel-doc:: drivers/gpu/drm/drm_self_refresh_helper.c 191 :export: 192 193HDCP Helper Functions Reference 194=============================== 195 196.. kernel-doc:: drivers/gpu/drm/drm_hdcp.c 197 :export: 198 199Display Port Helper Functions Reference 200======================================= 201 202.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 203 :doc: dp helpers 204 205.. kernel-doc:: include/drm/drm_dp_helper.h 206 :internal: 207 208.. kernel-doc:: drivers/gpu/drm/drm_dp_helper.c 209 :export: 210 211Display Port CEC Helper Functions Reference 212=========================================== 213 214.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c 215 :doc: dp cec helpers 216 217.. kernel-doc:: drivers/gpu/drm/drm_dp_cec.c 218 :export: 219 220Display Port Dual Mode Adaptor Helper Functions Reference 221========================================================= 222 223.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 224 :doc: dp dual mode helpers 225 226.. kernel-doc:: include/drm/drm_dp_dual_mode_helper.h 227 :internal: 228 229.. kernel-doc:: drivers/gpu/drm/drm_dp_dual_mode_helper.c 230 :export: 231 232Display Port MST Helpers 233======================== 234 235Overview 236-------- 237 238.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 239 :doc: dp mst helper 240 241.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 242 :doc: Branch device and port refcounting 243 244Functions Reference 245------------------- 246 247.. kernel-doc:: include/drm/drm_dp_mst_helper.h 248 :internal: 249 250.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 251 :export: 252 253Topology Lifetime Internals 254--------------------------- 255 256These functions aren't exported to drivers, but are documented here to help make 257the MST topology helpers easier to understand 258 259.. kernel-doc:: drivers/gpu/drm/drm_dp_mst_topology.c 260 :functions: drm_dp_mst_topology_try_get_mstb drm_dp_mst_topology_get_mstb 261 drm_dp_mst_topology_put_mstb 262 drm_dp_mst_topology_try_get_port drm_dp_mst_topology_get_port 263 drm_dp_mst_topology_put_port 264 drm_dp_mst_get_mstb_malloc drm_dp_mst_put_mstb_malloc 265 266MIPI DBI Helper Functions Reference 267=================================== 268 269.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 270 :doc: overview 271 272.. kernel-doc:: include/drm/drm_mipi_dbi.h 273 :internal: 274 275.. kernel-doc:: drivers/gpu/drm/drm_mipi_dbi.c 276 :export: 277 278MIPI DSI Helper Functions Reference 279=================================== 280 281.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 282 :doc: dsi helpers 283 284.. kernel-doc:: include/drm/drm_mipi_dsi.h 285 :internal: 286 287.. kernel-doc:: drivers/gpu/drm/drm_mipi_dsi.c 288 :export: 289 290Display Stream Compression Helper Functions Reference 291===================================================== 292 293.. kernel-doc:: drivers/gpu/drm/drm_dsc.c 294 :doc: dsc helpers 295 296.. kernel-doc:: include/drm/drm_dsc.h 297 :internal: 298 299.. kernel-doc:: drivers/gpu/drm/drm_dsc.c 300 :export: 301 302Output Probing Helper Functions Reference 303========================================= 304 305.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 306 :doc: output probing helper overview 307 308.. kernel-doc:: drivers/gpu/drm/drm_probe_helper.c 309 :export: 310 311EDID Helper Functions Reference 312=============================== 313 314.. kernel-doc:: include/drm/drm_edid.h 315 :internal: 316 317.. kernel-doc:: drivers/gpu/drm/drm_edid.c 318 :export: 319 320SCDC Helper Functions Reference 321=============================== 322 323.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c 324 :doc: scdc helpers 325 326.. kernel-doc:: include/drm/drm_scdc_helper.h 327 :internal: 328 329.. kernel-doc:: drivers/gpu/drm/drm_scdc_helper.c 330 :export: 331 332HDMI Infoframes Helper Reference 333================================ 334 335Strictly speaking this is not a DRM helper library but generally useable 336by any driver interfacing with HDMI outputs like v4l or alsa drivers. 337But it nicely fits into the overall topic of mode setting helper 338libraries and hence is also included here. 339 340.. kernel-doc:: include/linux/hdmi.h 341 :internal: 342 343.. kernel-doc:: drivers/video/hdmi.c 344 :export: 345 346Rectangle Utilities Reference 347============================= 348 349.. kernel-doc:: include/drm/drm_rect.h 350 :doc: rect utils 351 352.. kernel-doc:: include/drm/drm_rect.h 353 :internal: 354 355.. kernel-doc:: drivers/gpu/drm/drm_rect.c 356 :export: 357 358Flip-work Helper Reference 359========================== 360 361.. kernel-doc:: include/drm/drm_flip_work.h 362 :doc: flip utils 363 364.. kernel-doc:: include/drm/drm_flip_work.h 365 :internal: 366 367.. kernel-doc:: drivers/gpu/drm/drm_flip_work.c 368 :export: 369 370Auxiliary Modeset Helpers 371========================= 372 373.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 374 :doc: aux kms helpers 375 376.. kernel-doc:: drivers/gpu/drm/drm_modeset_helper.c 377 :export: 378 379OF/DT Helpers 380============= 381 382.. kernel-doc:: drivers/gpu/drm/drm_of.c 383 :doc: overview 384 385.. kernel-doc:: drivers/gpu/drm/drm_of.c 386 :export: 387 388Legacy Plane Helper Reference 389============================= 390 391.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 392 :doc: overview 393 394.. kernel-doc:: drivers/gpu/drm/drm_plane_helper.c 395 :export: 396 397Legacy CRTC/Modeset Helper Functions Reference 398============================================== 399 400.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 401 :doc: overview 402 403.. kernel-doc:: drivers/gpu/drm/drm_crtc_helper.c 404 :export: 405 406SHMEM GEM Helper Reference 407========================== 408 409.. kernel-doc:: drivers/gpu/drm/drm_gem_shmem_helper.c 410 :doc: overview 411 412.. kernel-doc:: include/drm/drm_gem_shmem_helper.h 413 :internal: 414 415.. kernel-doc:: drivers/gpu/drm/drm_gem_shmem_helper.c 416 :export: 417