xref: /openbmc/linux/drivers/gpu/drm/Kconfig (revision f2d8e15b)
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