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