xref: /openbmc/linux/drivers/gpu/drm/Kconfig (revision 47010c04)
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
35config DRM_MIPI_DSI
36	bool
37	depends on DRM
38
39config DRM_DP_AUX_BUS
40	tristate
41	depends on DRM
42	depends on OF
43
44config 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
52config 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
66config 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
85config DRM_DP_HELPER
86	tristate
87	depends on DRM
88	help
89	  DRM helpers for DisplayPort.
90
91config DRM_KMS_HELPER
92	tristate
93	depends on DRM
94	help
95	  CRTC helpers for KMS drivers.
96
97config 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
112config 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
127config 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
149config 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
158config 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
178config 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
190config 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
201config 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
209config DRM_BUDDY
210	tristate
211	depends on DRM
212	help
213	  A page based buddy allocator
214
215config DRM_VRAM_HELPER
216	tristate
217	depends on DRM
218	help
219	  Helpers for VRAM memory management
220
221config DRM_TTM_HELPER
222	tristate
223	depends on DRM
224	select DRM_TTM
225	help
226	  Helpers for ttm-based gem objects
227
228config DRM_GEM_CMA_HELPER
229	tristate
230	depends on DRM
231	help
232	  Choose this if you need the GEM CMA helper functions
233
234config 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
240config DRM_SCHED
241	tristate
242	depends on DRM
243
244source "drivers/gpu/drm/i2c/Kconfig"
245
246source "drivers/gpu/drm/arm/Kconfig"
247
248config 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
268source "drivers/gpu/drm/radeon/Kconfig"
269
270config 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
288source "drivers/gpu/drm/amd/amdgpu/Kconfig"
289
290source "drivers/gpu/drm/nouveau/Kconfig"
291
292source "drivers/gpu/drm/i915/Kconfig"
293
294source "drivers/gpu/drm/kmb/Kconfig"
295
296config 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
305config 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
319source "drivers/gpu/drm/exynos/Kconfig"
320
321source "drivers/gpu/drm/rockchip/Kconfig"
322
323source "drivers/gpu/drm/vmwgfx/Kconfig"
324
325source "drivers/gpu/drm/gma500/Kconfig"
326
327source "drivers/gpu/drm/udl/Kconfig"
328
329source "drivers/gpu/drm/ast/Kconfig"
330
331source "drivers/gpu/drm/mgag200/Kconfig"
332
333source "drivers/gpu/drm/armada/Kconfig"
334
335source "drivers/gpu/drm/atmel-hlcdc/Kconfig"
336
337source "drivers/gpu/drm/rcar-du/Kconfig"
338
339source "drivers/gpu/drm/shmobile/Kconfig"
340
341source "drivers/gpu/drm/sun4i/Kconfig"
342
343source "drivers/gpu/drm/omapdrm/Kconfig"
344
345source "drivers/gpu/drm/tilcdc/Kconfig"
346
347source "drivers/gpu/drm/qxl/Kconfig"
348
349source "drivers/gpu/drm/virtio/Kconfig"
350
351source "drivers/gpu/drm/msm/Kconfig"
352
353source "drivers/gpu/drm/fsl-dcu/Kconfig"
354
355source "drivers/gpu/drm/tegra/Kconfig"
356
357source "drivers/gpu/drm/stm/Kconfig"
358
359source "drivers/gpu/drm/panel/Kconfig"
360
361source "drivers/gpu/drm/bridge/Kconfig"
362
363source "drivers/gpu/drm/sti/Kconfig"
364
365source "drivers/gpu/drm/imx/Kconfig"
366
367source "drivers/gpu/drm/ingenic/Kconfig"
368
369source "drivers/gpu/drm/v3d/Kconfig"
370
371source "drivers/gpu/drm/vc4/Kconfig"
372
373source "drivers/gpu/drm/etnaviv/Kconfig"
374
375source "drivers/gpu/drm/hisilicon/Kconfig"
376
377source "drivers/gpu/drm/mediatek/Kconfig"
378
379source "drivers/gpu/drm/mxsfb/Kconfig"
380
381source "drivers/gpu/drm/meson/Kconfig"
382
383source "drivers/gpu/drm/tiny/Kconfig"
384
385source "drivers/gpu/drm/pl111/Kconfig"
386
387source "drivers/gpu/drm/tve200/Kconfig"
388
389source "drivers/gpu/drm/xen/Kconfig"
390
391source "drivers/gpu/drm/vboxvideo/Kconfig"
392
393source "drivers/gpu/drm/lima/Kconfig"
394
395source "drivers/gpu/drm/panfrost/Kconfig"
396
397source "drivers/gpu/drm/aspeed/Kconfig"
398
399source "drivers/gpu/drm/mcde/Kconfig"
400
401source "drivers/gpu/drm/tidss/Kconfig"
402
403source "drivers/gpu/drm/xlnx/Kconfig"
404
405source "drivers/gpu/drm/gud/Kconfig"
406
407source "drivers/gpu/drm/solomon/Kconfig"
408
409source "drivers/gpu/drm/sprd/Kconfig"
410
411config 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
426menuconfig 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
441if DRM_LEGACY
442
443config 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
450config 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
459config 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
468config 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
477config 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
486config 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
493config 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
500endif # DRM_LEGACY
501
502config DRM_EXPORT_FOR_TESTS
503	bool
504
505# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
506config DRM_PANEL_ORIENTATION_QUIRKS
507	tristate
508
509# Separate option because nomodeset parameter is global and expected built-in
510config DRM_NOMODESET
511	bool
512	default n
513
514config DRM_LIB_RANDOM
515	bool
516	default n
517
518config DRM_PRIVACY_SCREEN
519	bool
520	default n
521