xref: /openbmc/linux/drivers/gpu/drm/Kconfig (revision 496091fa)
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_PANEL_ORIENTATION_QUIRKS
12	select HDMI
13	select FB_CMDLINE
14	select I2C
15	select I2C_ALGOBIT
16	select DMA_SHARED_BUFFER
17	select SYNC_FILE
18	help
19	  Kernel-level support for the Direct Rendering Infrastructure (DRI)
20	  introduced in XFree86 4.0. If you say Y here, you need to select
21	  the module that's right for your graphics card from the list below.
22	  These modules provide support for synchronization, security, and
23	  DMA transfers. Please see <http://dri.sourceforge.net/> for more
24	  details.  You should also select and configure AGP
25	  (/dev/agpgart) support if it is available for your platform.
26
27config DRM_MIPI_DSI
28	bool
29	depends on DRM
30
31config DRM_DP_AUX_CHARDEV
32	bool "DRM DP AUX Interface"
33	depends on DRM
34	help
35	  Choose this option to enable a /dev/drm_dp_auxN node that allows to
36	  read and write values to arbitrary DPCD registers on the DP aux
37	  channel.
38
39config DRM_DEBUG_MM
40	bool "Insert extra checks and debug info into the DRM range managers"
41	default n
42	depends on DRM=y
43	depends on STACKTRACE_SUPPORT
44	select STACKDEPOT
45	help
46	  Enable allocation tracking of memory manager and leak detection on
47	  shutdown.
48
49	  Recommended for driver developers only.
50
51	  If in doubt, say "N".
52
53config DRM_DEBUG_SELFTEST
54	tristate "kselftests for DRM"
55	depends on DRM
56	depends on DEBUG_KERNEL
57	select PRIME_NUMBERS
58	select DRM_LIB_RANDOM
59	select DRM_KMS_HELPER
60	default n
61	help
62	  This option provides kernel modules that can be used to run
63	  various selftests on parts of the DRM api. This option is not
64	  useful for distributions or general kernels, but only for kernel
65	  developers working on DRM and associated drivers.
66
67	  If in doubt, say "N".
68
69config DRM_KMS_HELPER
70	tristate
71	depends on DRM
72	help
73	  CRTC helpers for KMS drivers.
74
75config DRM_KMS_FB_HELPER
76	bool
77	depends on DRM_KMS_HELPER
78	select FB
79	select FRAMEBUFFER_CONSOLE if !EXPERT
80	select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
81	select FB_SYS_FOPS
82	select FB_SYS_FILLRECT
83	select FB_SYS_COPYAREA
84	select FB_SYS_IMAGEBLIT
85	select FB_CFB_FILLRECT
86	select FB_CFB_COPYAREA
87	select FB_CFB_IMAGEBLIT
88	select FB_DEFERRED_IO
89	help
90	  FBDEV helpers for KMS drivers.
91
92config DRM_FBDEV_EMULATION
93	bool "Enable legacy fbdev support for your modesetting driver"
94	depends on DRM
95	select DRM_KMS_HELPER
96	select DRM_KMS_FB_HELPER
97	default y
98	help
99	  Choose this option if you have a need for the legacy fbdev
100	  support. Note that this support also provides the linux console
101	  support on top of your modesetting driver.
102
103	  If in doubt, say "Y".
104
105config DRM_FBDEV_OVERALLOC
106	int "Overallocation of the fbdev buffer"
107	depends on DRM_FBDEV_EMULATION
108	default 100
109	help
110	  Defines the fbdev buffer overallocation in percent. Default
111	  is 100. Typical values for double buffering will be 200,
112	  triple buffering 300.
113
114config DRM_FBDEV_LEAK_PHYS_SMEM
115	bool "Shamelessly allow leaking of fbdev physical address (DANGEROUS)"
116	depends on DRM_FBDEV_EMULATION && EXPERT
117	default n
118	help
119	  In order to keep user-space compatibility, we want in certain
120	  use-cases to keep leaking the fbdev physical address to the
121	  user-space program handling the fbdev buffer.
122	  This affects, not only, Amlogic, Allwinner or Rockchip devices
123	  with ARM Mali GPUs using an userspace Blob.
124	  This option is not supported by upstream developers and should be
125	  removed as soon as possible and be considered as a broken and
126	  legacy behaviour from a modern fbdev device driver.
127
128	  Please send any bug reports when using this to your proprietary
129	  software vendor that requires this.
130
131	  If in doubt, say "N" or spread the word to your closed source
132	  library vendor.
133
134config DRM_LOAD_EDID_FIRMWARE
135	bool "Allow to specify an EDID data set instead of probing for it"
136	depends on DRM
137	help
138	  Say Y here, if you want to use EDID data to be loaded from the
139	  /lib/firmware directory or one of the provided built-in
140	  data sets. This may be necessary, if the graphics adapter or
141	  monitor are unable to provide appropriate EDID data. Since this
142	  feature is provided as a workaround for broken hardware, the
143	  default case is N. Details and instructions how to build your own
144	  EDID data are given in Documentation/EDID/HOWTO.txt.
145
146config DRM_DP_CEC
147	bool "Enable DisplayPort CEC-Tunneling-over-AUX HDMI support"
148	select CEC_CORE
149	help
150	  Choose this option if you want to enable HDMI CEC support for
151	  DisplayPort/USB-C to HDMI adapters.
152
153	  Note: not all adapters support this feature, and even for those
154	  that do support this they often do not hook up the CEC pin.
155
156config DRM_TTM
157	tristate
158	depends on DRM && MMU
159	help
160	  GPU memory management subsystem for devices with multiple
161	  GPU memory types. Will be enabled automatically if a device driver
162	  uses it.
163
164config DRM_VRAM_HELPER
165	tristate
166	depends on DRM
167	select DRM_TTM
168	help
169	  Helpers for VRAM memory management
170
171config DRM_GEM_CMA_HELPER
172	bool
173	depends on DRM
174	help
175	  Choose this if you need the GEM CMA helper functions
176
177config DRM_KMS_CMA_HELPER
178	bool
179	depends on DRM
180	select DRM_GEM_CMA_HELPER
181	help
182	  Choose this if you need the KMS CMA helper functions
183
184config DRM_GEM_SHMEM_HELPER
185	bool
186	depends on DRM
187	help
188	  Choose this if you need the GEM shmem helper functions
189
190config DRM_VM
191	bool
192	depends on DRM && MMU
193
194config DRM_SCHED
195	tristate
196	depends on DRM
197
198source "drivers/gpu/drm/i2c/Kconfig"
199
200source "drivers/gpu/drm/arm/Kconfig"
201
202config DRM_RADEON
203	tristate "ATI Radeon"
204	depends on DRM && PCI && MMU
205	select FW_LOADER
206        select DRM_KMS_HELPER
207        select DRM_TTM
208	select POWER_SUPPLY
209	select HWMON
210	select BACKLIGHT_CLASS_DEVICE
211	select INTERVAL_TREE
212	help
213	  Choose this option if you have an ATI Radeon graphics card.  There
214	  are both PCI and AGP versions.  You don't need to choose this to
215	  run the Radeon in plain VGA mode.
216
217	  If M is selected, the module will be called radeon.
218
219source "drivers/gpu/drm/radeon/Kconfig"
220
221config DRM_AMDGPU
222	tristate "AMD GPU"
223	depends on DRM && PCI && MMU
224	select FW_LOADER
225        select DRM_KMS_HELPER
226	select DRM_SCHED
227        select DRM_TTM
228	select POWER_SUPPLY
229	select HWMON
230	select BACKLIGHT_CLASS_DEVICE
231	select INTERVAL_TREE
232	select CHASH
233	help
234	  Choose this option if you have a recent AMD Radeon graphics card.
235
236	  If M is selected, the module will be called amdgpu.
237
238source "drivers/gpu/drm/amd/amdgpu/Kconfig"
239
240source "drivers/gpu/drm/nouveau/Kconfig"
241
242source "drivers/gpu/drm/i915/Kconfig"
243
244config DRM_VGEM
245	tristate "Virtual GEM provider"
246	depends on DRM
247	help
248	  Choose this option to get a virtual graphics memory manager,
249	  as used by Mesa's software renderer for enhanced performance.
250	  If M is selected the module will be called vgem.
251
252config DRM_VKMS
253	tristate "Virtual KMS (EXPERIMENTAL)"
254	depends on DRM
255	select DRM_KMS_HELPER
256	default n
257	help
258	  Virtual Kernel Mode-Setting (VKMS) is used for testing or for
259	  running GPU in a headless machines. Choose this option to get
260	  a VKMS.
261
262	  If M is selected the module will be called vkms.
263
264config DRM_ATI_PCIGART
265        bool
266
267source "drivers/gpu/drm/exynos/Kconfig"
268
269source "drivers/gpu/drm/rockchip/Kconfig"
270
271source "drivers/gpu/drm/vmwgfx/Kconfig"
272
273source "drivers/gpu/drm/gma500/Kconfig"
274
275source "drivers/gpu/drm/udl/Kconfig"
276
277source "drivers/gpu/drm/ast/Kconfig"
278
279source "drivers/gpu/drm/mgag200/Kconfig"
280
281source "drivers/gpu/drm/cirrus/Kconfig"
282
283source "drivers/gpu/drm/armada/Kconfig"
284
285source "drivers/gpu/drm/atmel-hlcdc/Kconfig"
286
287source "drivers/gpu/drm/rcar-du/Kconfig"
288
289source "drivers/gpu/drm/shmobile/Kconfig"
290
291source "drivers/gpu/drm/sun4i/Kconfig"
292
293source "drivers/gpu/drm/omapdrm/Kconfig"
294
295source "drivers/gpu/drm/tilcdc/Kconfig"
296
297source "drivers/gpu/drm/qxl/Kconfig"
298
299source "drivers/gpu/drm/bochs/Kconfig"
300
301source "drivers/gpu/drm/virtio/Kconfig"
302
303source "drivers/gpu/drm/msm/Kconfig"
304
305source "drivers/gpu/drm/fsl-dcu/Kconfig"
306
307source "drivers/gpu/drm/tegra/Kconfig"
308
309source "drivers/gpu/drm/stm/Kconfig"
310
311source "drivers/gpu/drm/panel/Kconfig"
312
313source "drivers/gpu/drm/bridge/Kconfig"
314
315source "drivers/gpu/drm/sti/Kconfig"
316
317source "drivers/gpu/drm/imx/Kconfig"
318
319source "drivers/gpu/drm/v3d/Kconfig"
320
321source "drivers/gpu/drm/vc4/Kconfig"
322
323source "drivers/gpu/drm/etnaviv/Kconfig"
324
325source "drivers/gpu/drm/arc/Kconfig"
326
327source "drivers/gpu/drm/hisilicon/Kconfig"
328
329source "drivers/gpu/drm/mediatek/Kconfig"
330
331source "drivers/gpu/drm/zte/Kconfig"
332
333source "drivers/gpu/drm/mxsfb/Kconfig"
334
335source "drivers/gpu/drm/meson/Kconfig"
336
337source "drivers/gpu/drm/tinydrm/Kconfig"
338
339source "drivers/gpu/drm/pl111/Kconfig"
340
341source "drivers/gpu/drm/tve200/Kconfig"
342
343source "drivers/gpu/drm/xen/Kconfig"
344
345source "drivers/gpu/drm/vboxvideo/Kconfig"
346
347source "drivers/gpu/drm/lima/Kconfig"
348
349source "drivers/gpu/drm/panfrost/Kconfig"
350
351source "drivers/gpu/drm/aspeed/Kconfig"
352
353source "drivers/gpu/drm/mcde/Kconfig"
354
355# Keep legacy drivers last
356
357menuconfig DRM_LEGACY
358	bool "Enable legacy drivers (DANGEROUS)"
359	depends on DRM && MMU
360	select DRM_VM
361	select DRM_ATI_PCIGART if PCI
362	help
363	  Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous
364	  APIs to user-space, which can be used to circumvent access
365	  restrictions and other security measures. For backwards compatibility
366	  those drivers are still available, but their use is highly
367	  inadvisable and might harm your system.
368
369	  You are recommended to use the safe modeset-only drivers instead, and
370	  perform 3D emulation in user-space.
371
372	  Unless you have strong reasons to go rogue, say "N".
373
374if DRM_LEGACY
375
376config DRM_TDFX
377	tristate "3dfx Banshee/Voodoo3+"
378	depends on DRM && PCI
379	help
380	  Choose this option if you have a 3dfx Banshee or Voodoo3 (or later),
381	  graphics card.  If M is selected, the module will be called tdfx.
382
383config DRM_R128
384	tristate "ATI Rage 128"
385	depends on DRM && PCI
386	select FW_LOADER
387	help
388	  Choose this option if you have an ATI Rage 128 graphics card.  If M
389	  is selected, the module will be called r128.  AGP support for
390	  this card is strongly suggested (unless you have a PCI version).
391
392config DRM_I810
393	tristate "Intel I810"
394	# !PREEMPT because of missing ioctl locking
395	depends on DRM && AGP && AGP_INTEL && (!PREEMPT || BROKEN)
396	help
397	  Choose this option if you have an Intel I810 graphics card.  If M is
398	  selected, the module will be called i810.  AGP support is required
399	  for this driver to work.
400
401config DRM_MGA
402	tristate "Matrox g200/g400"
403	depends on DRM && PCI
404	select FW_LOADER
405	help
406	  Choose this option if you have a Matrox G200, G400 or G450 graphics
407	  card.  If M is selected, the module will be called mga.  AGP
408	  support is required for this driver to work.
409
410config DRM_SIS
411	tristate "SiS video cards"
412	depends on DRM && AGP
413	depends on FB_SIS || FB_SIS=n
414	help
415	  Choose this option if you have a SiS 630 or compatible video
416	  chipset. If M is selected the module will be called sis. AGP
417	  support is required for this driver to work.
418
419config DRM_VIA
420	tristate "Via unichrome video cards"
421	depends on DRM && PCI
422	help
423	  Choose this option if you have a Via unichrome or compatible video
424	  chipset. If M is selected the module will be called via.
425
426config DRM_SAVAGE
427	tristate "Savage video cards"
428	depends on DRM && PCI
429	help
430	  Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
431	  chipset. If M is selected the module will be called savage.
432
433endif # DRM_LEGACY
434
435# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
436config DRM_PANEL_ORIENTATION_QUIRKS
437	tristate
438
439config DRM_LIB_RANDOM
440	bool
441	default n
442