xref: /openbmc/linux/drivers/gpu/drm/Kconfig (revision 137bfbd0)
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/driver-api/edid.rst.
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/ingenic/Kconfig"
320
321source "drivers/gpu/drm/v3d/Kconfig"
322
323source "drivers/gpu/drm/vc4/Kconfig"
324
325source "drivers/gpu/drm/etnaviv/Kconfig"
326
327source "drivers/gpu/drm/arc/Kconfig"
328
329source "drivers/gpu/drm/hisilicon/Kconfig"
330
331source "drivers/gpu/drm/mediatek/Kconfig"
332
333source "drivers/gpu/drm/zte/Kconfig"
334
335source "drivers/gpu/drm/mxsfb/Kconfig"
336
337source "drivers/gpu/drm/meson/Kconfig"
338
339source "drivers/gpu/drm/tinydrm/Kconfig"
340
341source "drivers/gpu/drm/pl111/Kconfig"
342
343source "drivers/gpu/drm/tve200/Kconfig"
344
345source "drivers/gpu/drm/xen/Kconfig"
346
347source "drivers/gpu/drm/vboxvideo/Kconfig"
348
349source "drivers/gpu/drm/lima/Kconfig"
350
351source "drivers/gpu/drm/panfrost/Kconfig"
352
353source "drivers/gpu/drm/aspeed/Kconfig"
354
355source "drivers/gpu/drm/mcde/Kconfig"
356
357# Keep legacy drivers last
358
359menuconfig DRM_LEGACY
360	bool "Enable legacy drivers (DANGEROUS)"
361	depends on DRM && MMU
362	select DRM_VM
363	select DRM_ATI_PCIGART if PCI
364	help
365	  Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous
366	  APIs to user-space, which can be used to circumvent access
367	  restrictions and other security measures. For backwards compatibility
368	  those drivers are still available, but their use is highly
369	  inadvisable and might harm your system.
370
371	  You are recommended to use the safe modeset-only drivers instead, and
372	  perform 3D emulation in user-space.
373
374	  Unless you have strong reasons to go rogue, say "N".
375
376if DRM_LEGACY
377
378config DRM_TDFX
379	tristate "3dfx Banshee/Voodoo3+"
380	depends on DRM && PCI
381	help
382	  Choose this option if you have a 3dfx Banshee or Voodoo3 (or later),
383	  graphics card.  If M is selected, the module will be called tdfx.
384
385config DRM_R128
386	tristate "ATI Rage 128"
387	depends on DRM && PCI
388	select FW_LOADER
389	help
390	  Choose this option if you have an ATI Rage 128 graphics card.  If M
391	  is selected, the module will be called r128.  AGP support for
392	  this card is strongly suggested (unless you have a PCI version).
393
394config DRM_I810
395	tristate "Intel I810"
396	# !PREEMPT because of missing ioctl locking
397	depends on DRM && AGP && AGP_INTEL && (!PREEMPTION || BROKEN)
398	help
399	  Choose this option if you have an Intel I810 graphics card.  If M is
400	  selected, the module will be called i810.  AGP support is required
401	  for this driver to work.
402
403config DRM_MGA
404	tristate "Matrox g200/g400"
405	depends on DRM && PCI
406	select FW_LOADER
407	help
408	  Choose this option if you have a Matrox G200, G400 or G450 graphics
409	  card.  If M is selected, the module will be called mga.  AGP
410	  support is required for this driver to work.
411
412config DRM_SIS
413	tristate "SiS video cards"
414	depends on DRM && AGP
415	depends on FB_SIS || FB_SIS=n
416	help
417	  Choose this option if you have a SiS 630 or compatible video
418	  chipset. If M is selected the module will be called sis. AGP
419	  support is required for this driver to work.
420
421config DRM_VIA
422	tristate "Via unichrome video cards"
423	depends on DRM && PCI
424	help
425	  Choose this option if you have a Via unichrome or compatible video
426	  chipset. If M is selected the module will be called via.
427
428config DRM_SAVAGE
429	tristate "Savage video cards"
430	depends on DRM && PCI
431	help
432	  Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
433	  chipset. If M is selected the module will be called savage.
434
435endif # DRM_LEGACY
436
437# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
438config DRM_PANEL_ORIENTATION_QUIRKS
439	tristate
440
441config DRM_LIB_RANDOM
442	bool
443	default n
444