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 # radeon depends on ACPI_VIDEO when ACPI is enabled, for select to work 239 # ACPI_VIDEO's dependencies must also be selected. 240 select INPUT if ACPI 241 select ACPI_VIDEO if ACPI 242 # On x86 ACPI_VIDEO also needs ACPI_WMI 243 select X86_PLATFORM_DEVICES if ACPI && X86 244 select ACPI_WMI if ACPI && X86 245 help 246 Choose this option if you have an ATI Radeon graphics card. There 247 are both PCI and AGP versions. You don't need to choose this to 248 run the Radeon in plain VGA mode. 249 250 If M is selected, the module will be called radeon. 251 252source "drivers/gpu/drm/radeon/Kconfig" 253 254config DRM_AMDGPU 255 tristate "AMD GPU" 256 depends on DRM && PCI && MMU 257 select FW_LOADER 258 select DRM_DISPLAY_DP_HELPER 259 select DRM_DISPLAY_HDMI_HELPER 260 select DRM_DISPLAY_HELPER 261 select DRM_KMS_HELPER 262 select DRM_SCHED 263 select DRM_TTM 264 select DRM_TTM_HELPER 265 select POWER_SUPPLY 266 select HWMON 267 select BACKLIGHT_CLASS_DEVICE 268 select INTERVAL_TREE 269 select DRM_BUDDY 270 # amdgpu depends on ACPI_VIDEO when ACPI is enabled, for select to work 271 # ACPI_VIDEO's dependencies must also be selected. 272 select INPUT if ACPI 273 select ACPI_VIDEO if ACPI 274 # On x86 ACPI_VIDEO also needs ACPI_WMI 275 select X86_PLATFORM_DEVICES if ACPI && X86 276 select ACPI_WMI if ACPI && X86 277 help 278 Choose this option if you have a recent AMD Radeon graphics card. 279 280 If M is selected, the module will be called amdgpu. 281 282source "drivers/gpu/drm/amd/amdgpu/Kconfig" 283 284source "drivers/gpu/drm/nouveau/Kconfig" 285 286source "drivers/gpu/drm/i915/Kconfig" 287 288source "drivers/gpu/drm/kmb/Kconfig" 289 290config DRM_VGEM 291 tristate "Virtual GEM provider" 292 depends on DRM && MMU 293 select DRM_GEM_SHMEM_HELPER 294 help 295 Choose this option to get a virtual graphics memory manager, 296 as used by Mesa's software renderer for enhanced performance. 297 If M is selected the module will be called vgem. 298 299config DRM_VKMS 300 tristate "Virtual KMS (EXPERIMENTAL)" 301 depends on DRM && MMU 302 select DRM_KMS_HELPER 303 select DRM_GEM_SHMEM_HELPER 304 select CRC32 305 default n 306 help 307 Virtual Kernel Mode-Setting (VKMS) is used for testing or for 308 running GPU in a headless machines. Choose this option to get 309 a VKMS. 310 311 If M is selected the module will be called vkms. 312 313source "drivers/gpu/drm/exynos/Kconfig" 314 315source "drivers/gpu/drm/rockchip/Kconfig" 316 317source "drivers/gpu/drm/vmwgfx/Kconfig" 318 319source "drivers/gpu/drm/gma500/Kconfig" 320 321source "drivers/gpu/drm/udl/Kconfig" 322 323source "drivers/gpu/drm/ast/Kconfig" 324 325source "drivers/gpu/drm/mgag200/Kconfig" 326 327source "drivers/gpu/drm/armada/Kconfig" 328 329source "drivers/gpu/drm/atmel-hlcdc/Kconfig" 330 331source "drivers/gpu/drm/rcar-du/Kconfig" 332 333source "drivers/gpu/drm/shmobile/Kconfig" 334 335source "drivers/gpu/drm/sun4i/Kconfig" 336 337source "drivers/gpu/drm/omapdrm/Kconfig" 338 339source "drivers/gpu/drm/tilcdc/Kconfig" 340 341source "drivers/gpu/drm/qxl/Kconfig" 342 343source "drivers/gpu/drm/virtio/Kconfig" 344 345source "drivers/gpu/drm/msm/Kconfig" 346 347source "drivers/gpu/drm/fsl-dcu/Kconfig" 348 349source "drivers/gpu/drm/tegra/Kconfig" 350 351source "drivers/gpu/drm/stm/Kconfig" 352 353source "drivers/gpu/drm/panel/Kconfig" 354 355source "drivers/gpu/drm/bridge/Kconfig" 356 357source "drivers/gpu/drm/sti/Kconfig" 358 359source "drivers/gpu/drm/imx/Kconfig" 360 361source "drivers/gpu/drm/ingenic/Kconfig" 362 363source "drivers/gpu/drm/v3d/Kconfig" 364 365source "drivers/gpu/drm/vc4/Kconfig" 366 367source "drivers/gpu/drm/etnaviv/Kconfig" 368 369source "drivers/gpu/drm/hisilicon/Kconfig" 370 371source "drivers/gpu/drm/logicvc/Kconfig" 372 373source "drivers/gpu/drm/mediatek/Kconfig" 374 375source "drivers/gpu/drm/mxsfb/Kconfig" 376 377source "drivers/gpu/drm/meson/Kconfig" 378 379source "drivers/gpu/drm/tiny/Kconfig" 380 381source "drivers/gpu/drm/pl111/Kconfig" 382 383source "drivers/gpu/drm/tve200/Kconfig" 384 385source "drivers/gpu/drm/xen/Kconfig" 386 387source "drivers/gpu/drm/vboxvideo/Kconfig" 388 389source "drivers/gpu/drm/lima/Kconfig" 390 391source "drivers/gpu/drm/panfrost/Kconfig" 392 393source "drivers/gpu/drm/aspeed/Kconfig" 394 395source "drivers/gpu/drm/mcde/Kconfig" 396 397source "drivers/gpu/drm/tidss/Kconfig" 398 399source "drivers/gpu/drm/xlnx/Kconfig" 400 401source "drivers/gpu/drm/gud/Kconfig" 402 403source "drivers/gpu/drm/solomon/Kconfig" 404 405source "drivers/gpu/drm/sprd/Kconfig" 406 407config DRM_HYPERV 408 tristate "DRM Support for Hyper-V synthetic video device" 409 depends on DRM && PCI && MMU && HYPERV 410 select DRM_KMS_HELPER 411 select DRM_GEM_SHMEM_HELPER 412 help 413 This is a KMS driver for Hyper-V synthetic video device. Choose this 414 option if you would like to enable drm driver for Hyper-V virtual 415 machine. Unselect Hyper-V framebuffer driver (CONFIG_FB_HYPERV) so 416 that DRM driver is used by default. 417 418 If M is selected the module will be called hyperv_drm. 419 420# Keep legacy drivers last 421 422menuconfig DRM_LEGACY 423 bool "Enable legacy drivers (DANGEROUS)" 424 depends on DRM && MMU 425 help 426 Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous 427 APIs to user-space, which can be used to circumvent access 428 restrictions and other security measures. For backwards compatibility 429 those drivers are still available, but their use is highly 430 inadvisable and might harm your system. 431 432 You are recommended to use the safe modeset-only drivers instead, and 433 perform 3D emulation in user-space. 434 435 Unless you have strong reasons to go rogue, say "N". 436 437if DRM_LEGACY 438 439config DRM_TDFX 440 tristate "3dfx Banshee/Voodoo3+" 441 depends on DRM && PCI 442 help 443 Choose this option if you have a 3dfx Banshee or Voodoo3 (or later), 444 graphics card. If M is selected, the module will be called tdfx. 445 446config DRM_R128 447 tristate "ATI Rage 128" 448 depends on DRM && PCI 449 select FW_LOADER 450 help 451 Choose this option if you have an ATI Rage 128 graphics card. If M 452 is selected, the module will be called r128. AGP support for 453 this card is strongly suggested (unless you have a PCI version). 454 455config DRM_I810 456 tristate "Intel I810" 457 # !PREEMPTION because of missing ioctl locking 458 depends on DRM && AGP && AGP_INTEL && (!PREEMPTION || BROKEN) 459 help 460 Choose this option if you have an Intel I810 graphics card. If M is 461 selected, the module will be called i810. AGP support is required 462 for this driver to work. 463 464config DRM_MGA 465 tristate "Matrox g200/g400" 466 depends on DRM && PCI 467 select FW_LOADER 468 help 469 Choose this option if you have a Matrox G200, G400 or G450 graphics 470 card. If M is selected, the module will be called mga. AGP 471 support is required for this driver to work. 472 473config DRM_SIS 474 tristate "SiS video cards" 475 depends on DRM && AGP 476 depends on FB_SIS || FB_SIS=n 477 help 478 Choose this option if you have a SiS 630 or compatible video 479 chipset. If M is selected the module will be called sis. AGP 480 support is required for this driver to work. 481 482config DRM_VIA 483 tristate "Via unichrome video cards" 484 depends on DRM && PCI 485 help 486 Choose this option if you have a Via unichrome or compatible video 487 chipset. If M is selected the module will be called via. 488 489config DRM_SAVAGE 490 tristate "Savage video cards" 491 depends on DRM && PCI 492 help 493 Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister 494 chipset. If M is selected the module will be called savage. 495 496endif # DRM_LEGACY 497 498config DRM_EXPORT_FOR_TESTS 499 bool 500 501# Separate option because drm_panel_orientation_quirks.c is shared with fbdev 502config DRM_PANEL_ORIENTATION_QUIRKS 503 tristate 504 505# Separate option because nomodeset parameter is global and expected built-in 506config DRM_NOMODESET 507 bool 508 default n 509 510config DRM_LIB_RANDOM 511 bool 512 default n 513 514config DRM_PRIVACY_SCREEN 515 bool 516 default n 517