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