1# SPDX-License-Identifier: GPL-2.0-only 2# 3# Drm device configuration 4# 5# This driver provides support for the 6# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. 7# 8menuconfig DRM 9 tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" 10 depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA 11 select DRM_NOMODESET 12 select DRM_PANEL_ORIENTATION_QUIRKS 13 select HDMI 14 select FB_CMDLINE 15 select I2C 16 select I2C_ALGOBIT 17 select DMA_SHARED_BUFFER 18 select SYNC_FILE 19# gallium uses SYS_kcmp for os_same_file_description() to de-duplicate 20# device and dmabuf fd. Let's make sure that is available for our userspace. 21 select KCMP 22 help 23 Kernel-level support for the Direct Rendering Infrastructure (DRI) 24 introduced in XFree86 4.0. If you say Y here, you need to select 25 the module that's right for your graphics card from the list below. 26 These modules provide support for synchronization, security, and 27 DMA transfers. Please see <http://dri.sourceforge.net/> for more 28 details. You should also select and configure AGP 29 (/dev/agpgart) support if it is available for your platform. 30 31config DRM_MIPI_DBI 32 tristate 33 depends on DRM 34 select DRM_KMS_HELPER 35 36config DRM_MIPI_DSI 37 bool 38 depends on DRM 39 40config DRM_DEBUG_MM 41 bool "Insert extra checks and debug info into the DRM range managers" 42 default n 43 depends on DRM=y 44 depends on STACKTRACE_SUPPORT 45 select STACKDEPOT 46 help 47 Enable allocation tracking of memory manager and leak detection on 48 shutdown. 49 50 Recommended for driver developers only. 51 52 If in doubt, say "N". 53 54config DRM_KUNIT_TEST 55 tristate "KUnit tests for DRM" if !KUNIT_ALL_TESTS 56 depends on DRM && KUNIT 57 select PRIME_NUMBERS 58 select DRM_DISPLAY_DP_HELPER 59 select DRM_DISPLAY_HELPER 60 select DRM_LIB_RANDOM 61 select DRM_KMS_HELPER 62 select DRM_BUDDY 63 select DRM_EXPORT_FOR_TESTS if m 64 default KUNIT_ALL_TESTS 65 help 66 This builds unit tests for DRM. This option is not useful for 67 distributions or general kernels, but only for kernel 68 developers working on DRM and associated drivers. 69 70 For more information on KUnit and unit tests in general, 71 please refer to the KUnit documentation in 72 Documentation/dev-tools/kunit/. 73 74 If in doubt, say "N". 75 76config DRM_KMS_HELPER 77 tristate 78 depends on DRM 79 help 80 CRTC helpers for KMS drivers. 81 82config DRM_DEBUG_DP_MST_TOPOLOGY_REFS 83 bool "Enable refcount backtrace history in the DP MST helpers" 84 depends on STACKTRACE_SUPPORT 85 select STACKDEPOT 86 depends on DRM_KMS_HELPER 87 depends on DEBUG_KERNEL 88 depends on EXPERT 89 help 90 Enables debug tracing for topology refs in DRM's DP MST helpers. A 91 history of each topology reference/dereference will be printed to the 92 kernel log once a port or branch device's topology refcount reaches 0. 93 94 This has the potential to use a lot of memory and print some very 95 large kernel messages. If in doubt, say "N". 96 97config DRM_DEBUG_MODESET_LOCK 98 bool "Enable backtrace history for lock contention" 99 depends on STACKTRACE_SUPPORT 100 depends on DEBUG_KERNEL 101 depends on EXPERT 102 select STACKDEPOT 103 default y if DEBUG_WW_MUTEX_SLOWPATH 104 help 105 Enable debug tracing of failures to gracefully handle drm modeset lock 106 contention. A history of each drm modeset lock path hitting -EDEADLK 107 will be saved until gracefully handled, and the backtrace will be 108 printed when attempting to lock a contended lock. 109 110 If in doubt, say "N". 111 112config DRM_FBDEV_EMULATION 113 bool "Enable legacy fbdev support for your modesetting driver" 114 depends on DRM_KMS_HELPER 115 depends on FB=y || FB=DRM_KMS_HELPER 116 select FB_CFB_FILLRECT 117 select FB_CFB_COPYAREA 118 select FB_CFB_IMAGEBLIT 119 select FB_DEFERRED_IO 120 select FB_SYS_FOPS 121 select FB_SYS_FILLRECT 122 select FB_SYS_COPYAREA 123 select FB_SYS_IMAGEBLIT 124 select FRAMEBUFFER_CONSOLE if !EXPERT 125 select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE 126 default y 127 help 128 Choose this option if you have a need for the legacy fbdev 129 support. Note that this support also provides the linux console 130 support on top of your modesetting driver. 131 132 If in doubt, say "Y". 133 134config DRM_FBDEV_OVERALLOC 135 int "Overallocation of the fbdev buffer" 136 depends on DRM_FBDEV_EMULATION 137 default 100 138 help 139 Defines the fbdev buffer overallocation in percent. Default 140 is 100. Typical values for double buffering will be 200, 141 triple buffering 300. 142 143config DRM_FBDEV_LEAK_PHYS_SMEM 144 bool "Shamelessly allow leaking of fbdev physical address (DANGEROUS)" 145 depends on DRM_FBDEV_EMULATION && EXPERT 146 default n 147 help 148 In order to keep user-space compatibility, we want in certain 149 use-cases to keep leaking the fbdev physical address to the 150 user-space program handling the fbdev buffer. 151 This affects, not only, Amlogic, Allwinner or Rockchip devices 152 with ARM Mali GPUs using an userspace Blob. 153 This option is not supported by upstream developers and should be 154 removed as soon as possible and be considered as a broken and 155 legacy behaviour from a modern fbdev device driver. 156 157 Please send any bug reports when using this to your proprietary 158 software vendor that requires this. 159 160 If in doubt, say "N" or spread the word to your closed source 161 library vendor. 162 163config DRM_LOAD_EDID_FIRMWARE 164 bool "Allow to specify an EDID data set instead of probing for it" 165 depends on DRM 166 help 167 Say Y here, if you want to use EDID data to be loaded from the 168 /lib/firmware directory or one of the provided built-in 169 data sets. This may be necessary, if the graphics adapter or 170 monitor are unable to provide appropriate EDID data. Since this 171 feature is provided as a workaround for broken hardware, the 172 default case is N. Details and instructions how to build your own 173 EDID data are given in Documentation/admin-guide/edid.rst. 174 175source "drivers/gpu/drm/display/Kconfig" 176 177config DRM_TTM 178 tristate 179 depends on DRM && MMU 180 help 181 GPU memory management subsystem for devices with multiple 182 GPU memory types. Will be enabled automatically if a device driver 183 uses it. 184 185config DRM_BUDDY 186 tristate 187 depends on DRM 188 help 189 A page based buddy allocator 190 191config DRM_VRAM_HELPER 192 tristate 193 depends on DRM 194 help 195 Helpers for VRAM memory management 196 197config DRM_TTM_HELPER 198 tristate 199 depends on DRM 200 select DRM_TTM 201 help 202 Helpers for ttm-based gem objects 203 204config DRM_GEM_DMA_HELPER 205 tristate 206 depends on DRM 207 help 208 Choose this if you need the GEM DMA helper functions 209 210config DRM_GEM_SHMEM_HELPER 211 tristate 212 depends on DRM && MMU 213 help 214 Choose this if you need the GEM shmem helper functions 215 216config DRM_SCHED 217 tristate 218 depends on DRM 219 220source "drivers/gpu/drm/i2c/Kconfig" 221 222source "drivers/gpu/drm/arm/Kconfig" 223 224config DRM_RADEON 225 tristate "ATI Radeon" 226 depends on DRM && PCI && MMU 227 depends on AGP || !AGP 228 select FW_LOADER 229 select DRM_DISPLAY_DP_HELPER 230 select DRM_DISPLAY_HELPER 231 select DRM_KMS_HELPER 232 select DRM_TTM 233 select DRM_TTM_HELPER 234 select POWER_SUPPLY 235 select HWMON 236 select BACKLIGHT_CLASS_DEVICE 237 select INTERVAL_TREE 238 help 239 Choose this option if you have an ATI Radeon graphics card. There 240 are both PCI and AGP versions. You don't need to choose this to 241 run the Radeon in plain VGA mode. 242 243 If M is selected, the module will be called radeon. 244 245source "drivers/gpu/drm/radeon/Kconfig" 246 247config DRM_AMDGPU 248 tristate "AMD GPU" 249 depends on DRM && PCI && MMU 250 select FW_LOADER 251 select DRM_DISPLAY_DP_HELPER 252 select DRM_DISPLAY_HDMI_HELPER 253 select DRM_DISPLAY_HELPER 254 select DRM_KMS_HELPER 255 select DRM_SCHED 256 select DRM_TTM 257 select DRM_TTM_HELPER 258 select POWER_SUPPLY 259 select HWMON 260 select BACKLIGHT_CLASS_DEVICE 261 select INTERVAL_TREE 262 select DRM_BUDDY 263 help 264 Choose this option if you have a recent AMD Radeon graphics card. 265 266 If M is selected, the module will be called amdgpu. 267 268source "drivers/gpu/drm/amd/amdgpu/Kconfig" 269 270source "drivers/gpu/drm/nouveau/Kconfig" 271 272source "drivers/gpu/drm/i915/Kconfig" 273 274source "drivers/gpu/drm/kmb/Kconfig" 275 276config DRM_VGEM 277 tristate "Virtual GEM provider" 278 depends on DRM && MMU 279 select DRM_GEM_SHMEM_HELPER 280 help 281 Choose this option to get a virtual graphics memory manager, 282 as used by Mesa's software renderer for enhanced performance. 283 If M is selected the module will be called vgem. 284 285config DRM_VKMS 286 tristate "Virtual KMS (EXPERIMENTAL)" 287 depends on DRM && MMU 288 select DRM_KMS_HELPER 289 select DRM_GEM_SHMEM_HELPER 290 select CRC32 291 default n 292 help 293 Virtual Kernel Mode-Setting (VKMS) is used for testing or for 294 running GPU in a headless machines. Choose this option to get 295 a VKMS. 296 297 If M is selected the module will be called vkms. 298 299source "drivers/gpu/drm/exynos/Kconfig" 300 301source "drivers/gpu/drm/rockchip/Kconfig" 302 303source "drivers/gpu/drm/vmwgfx/Kconfig" 304 305source "drivers/gpu/drm/gma500/Kconfig" 306 307source "drivers/gpu/drm/udl/Kconfig" 308 309source "drivers/gpu/drm/ast/Kconfig" 310 311source "drivers/gpu/drm/mgag200/Kconfig" 312 313source "drivers/gpu/drm/armada/Kconfig" 314 315source "drivers/gpu/drm/atmel-hlcdc/Kconfig" 316 317source "drivers/gpu/drm/rcar-du/Kconfig" 318 319source "drivers/gpu/drm/shmobile/Kconfig" 320 321source "drivers/gpu/drm/sun4i/Kconfig" 322 323source "drivers/gpu/drm/omapdrm/Kconfig" 324 325source "drivers/gpu/drm/tilcdc/Kconfig" 326 327source "drivers/gpu/drm/qxl/Kconfig" 328 329source "drivers/gpu/drm/virtio/Kconfig" 330 331source "drivers/gpu/drm/msm/Kconfig" 332 333source "drivers/gpu/drm/fsl-dcu/Kconfig" 334 335source "drivers/gpu/drm/tegra/Kconfig" 336 337source "drivers/gpu/drm/stm/Kconfig" 338 339source "drivers/gpu/drm/panel/Kconfig" 340 341source "drivers/gpu/drm/bridge/Kconfig" 342 343source "drivers/gpu/drm/sti/Kconfig" 344 345source "drivers/gpu/drm/imx/Kconfig" 346 347source "drivers/gpu/drm/ingenic/Kconfig" 348 349source "drivers/gpu/drm/v3d/Kconfig" 350 351source "drivers/gpu/drm/vc4/Kconfig" 352 353source "drivers/gpu/drm/etnaviv/Kconfig" 354 355source "drivers/gpu/drm/hisilicon/Kconfig" 356 357source "drivers/gpu/drm/logicvc/Kconfig" 358 359source "drivers/gpu/drm/mediatek/Kconfig" 360 361source "drivers/gpu/drm/mxsfb/Kconfig" 362 363source "drivers/gpu/drm/meson/Kconfig" 364 365source "drivers/gpu/drm/tiny/Kconfig" 366 367source "drivers/gpu/drm/pl111/Kconfig" 368 369source "drivers/gpu/drm/tve200/Kconfig" 370 371source "drivers/gpu/drm/xen/Kconfig" 372 373source "drivers/gpu/drm/vboxvideo/Kconfig" 374 375source "drivers/gpu/drm/lima/Kconfig" 376 377source "drivers/gpu/drm/panfrost/Kconfig" 378 379source "drivers/gpu/drm/aspeed/Kconfig" 380 381source "drivers/gpu/drm/mcde/Kconfig" 382 383source "drivers/gpu/drm/tidss/Kconfig" 384 385source "drivers/gpu/drm/xlnx/Kconfig" 386 387source "drivers/gpu/drm/gud/Kconfig" 388 389source "drivers/gpu/drm/solomon/Kconfig" 390 391source "drivers/gpu/drm/sprd/Kconfig" 392 393config DRM_HYPERV 394 tristate "DRM Support for Hyper-V synthetic video device" 395 depends on DRM && PCI && MMU && HYPERV 396 select DRM_KMS_HELPER 397 select DRM_GEM_SHMEM_HELPER 398 help 399 This is a KMS driver for Hyper-V synthetic video device. Choose this 400 option if you would like to enable drm driver for Hyper-V virtual 401 machine. Unselect Hyper-V framebuffer driver (CONFIG_FB_HYPERV) so 402 that DRM driver is used by default. 403 404 If M is selected the module will be called hyperv_drm. 405 406# Keep legacy drivers last 407 408menuconfig DRM_LEGACY 409 bool "Enable legacy drivers (DANGEROUS)" 410 depends on DRM && MMU 411 help 412 Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous 413 APIs to user-space, which can be used to circumvent access 414 restrictions and other security measures. For backwards compatibility 415 those drivers are still available, but their use is highly 416 inadvisable and might harm your system. 417 418 You are recommended to use the safe modeset-only drivers instead, and 419 perform 3D emulation in user-space. 420 421 Unless you have strong reasons to go rogue, say "N". 422 423if DRM_LEGACY 424 425config DRM_TDFX 426 tristate "3dfx Banshee/Voodoo3+" 427 depends on DRM && PCI 428 help 429 Choose this option if you have a 3dfx Banshee or Voodoo3 (or later), 430 graphics card. If M is selected, the module will be called tdfx. 431 432config DRM_R128 433 tristate "ATI Rage 128" 434 depends on DRM && PCI 435 select FW_LOADER 436 help 437 Choose this option if you have an ATI Rage 128 graphics card. If M 438 is selected, the module will be called r128. AGP support for 439 this card is strongly suggested (unless you have a PCI version). 440 441config DRM_I810 442 tristate "Intel I810" 443 # !PREEMPTION because of missing ioctl locking 444 depends on DRM && AGP && AGP_INTEL && (!PREEMPTION || BROKEN) 445 help 446 Choose this option if you have an Intel I810 graphics card. If M is 447 selected, the module will be called i810. AGP support is required 448 for this driver to work. 449 450config DRM_MGA 451 tristate "Matrox g200/g400" 452 depends on DRM && PCI 453 select FW_LOADER 454 help 455 Choose this option if you have a Matrox G200, G400 or G450 graphics 456 card. If M is selected, the module will be called mga. AGP 457 support is required for this driver to work. 458 459config DRM_SIS 460 tristate "SiS video cards" 461 depends on DRM && AGP 462 depends on FB_SIS || FB_SIS=n 463 help 464 Choose this option if you have a SiS 630 or compatible video 465 chipset. If M is selected the module will be called sis. AGP 466 support is required for this driver to work. 467 468config DRM_VIA 469 tristate "Via unichrome video cards" 470 depends on DRM && PCI 471 help 472 Choose this option if you have a Via unichrome or compatible video 473 chipset. If M is selected the module will be called via. 474 475config DRM_SAVAGE 476 tristate "Savage video cards" 477 depends on DRM && PCI 478 help 479 Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister 480 chipset. If M is selected the module will be called savage. 481 482endif # DRM_LEGACY 483 484config DRM_EXPORT_FOR_TESTS 485 bool 486 487# Separate option because drm_panel_orientation_quirks.c is shared with fbdev 488config DRM_PANEL_ORIENTATION_QUIRKS 489 tristate 490 491# Separate option because nomodeset parameter is global and expected built-in 492config DRM_NOMODESET 493 bool 494 default n 495 496config DRM_LIB_RANDOM 497 bool 498 default n 499 500config DRM_PRIVACY_SCREEN 501 bool 502 default n 503