xref: /openbmc/linux/drivers/gpu/drm/Kconfig (revision 1802d0be)
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_GEM_CMA_HELPER
165	bool
166	depends on DRM
167	help
168	  Choose this if you need the GEM CMA helper functions
169
170config DRM_KMS_CMA_HELPER
171	bool
172	depends on DRM
173	select DRM_GEM_CMA_HELPER
174	help
175	  Choose this if you need the KMS CMA helper functions
176
177config DRM_GEM_SHMEM_HELPER
178	bool
179	depends on DRM
180	help
181	  Choose this if you need the GEM shmem helper functions
182
183config DRM_VM
184	bool
185	depends on DRM && MMU
186
187config DRM_SCHED
188	tristate
189	depends on DRM
190
191source "drivers/gpu/drm/i2c/Kconfig"
192
193source "drivers/gpu/drm/arm/Kconfig"
194
195config DRM_RADEON
196	tristate "ATI Radeon"
197	depends on DRM && PCI && MMU
198	select FW_LOADER
199        select DRM_KMS_HELPER
200        select DRM_TTM
201	select POWER_SUPPLY
202	select HWMON
203	select BACKLIGHT_CLASS_DEVICE
204	select INTERVAL_TREE
205	help
206	  Choose this option if you have an ATI Radeon graphics card.  There
207	  are both PCI and AGP versions.  You don't need to choose this to
208	  run the Radeon in plain VGA mode.
209
210	  If M is selected, the module will be called radeon.
211
212source "drivers/gpu/drm/radeon/Kconfig"
213
214config DRM_AMDGPU
215	tristate "AMD GPU"
216	depends on DRM && PCI && MMU
217	select FW_LOADER
218        select DRM_KMS_HELPER
219	select DRM_SCHED
220        select DRM_TTM
221	select POWER_SUPPLY
222	select HWMON
223	select BACKLIGHT_CLASS_DEVICE
224	select INTERVAL_TREE
225	select CHASH
226	help
227	  Choose this option if you have a recent AMD Radeon graphics card.
228
229	  If M is selected, the module will be called amdgpu.
230
231source "drivers/gpu/drm/amd/amdgpu/Kconfig"
232
233source "drivers/gpu/drm/nouveau/Kconfig"
234
235source "drivers/gpu/drm/i915/Kconfig"
236
237config DRM_VGEM
238	tristate "Virtual GEM provider"
239	depends on DRM
240	help
241	  Choose this option to get a virtual graphics memory manager,
242	  as used by Mesa's software renderer for enhanced performance.
243	  If M is selected the module will be called vgem.
244
245config DRM_VKMS
246	tristate "Virtual KMS (EXPERIMENTAL)"
247	depends on DRM
248	select DRM_KMS_HELPER
249	default n
250	help
251	  Virtual Kernel Mode-Setting (VKMS) is used for testing or for
252	  running GPU in a headless machines. Choose this option to get
253	  a VKMS.
254
255	  If M is selected the module will be called vkms.
256
257config DRM_ATI_PCIGART
258        bool
259
260source "drivers/gpu/drm/exynos/Kconfig"
261
262source "drivers/gpu/drm/rockchip/Kconfig"
263
264source "drivers/gpu/drm/vmwgfx/Kconfig"
265
266source "drivers/gpu/drm/gma500/Kconfig"
267
268source "drivers/gpu/drm/udl/Kconfig"
269
270source "drivers/gpu/drm/ast/Kconfig"
271
272source "drivers/gpu/drm/mgag200/Kconfig"
273
274source "drivers/gpu/drm/cirrus/Kconfig"
275
276source "drivers/gpu/drm/armada/Kconfig"
277
278source "drivers/gpu/drm/atmel-hlcdc/Kconfig"
279
280source "drivers/gpu/drm/rcar-du/Kconfig"
281
282source "drivers/gpu/drm/shmobile/Kconfig"
283
284source "drivers/gpu/drm/sun4i/Kconfig"
285
286source "drivers/gpu/drm/omapdrm/Kconfig"
287
288source "drivers/gpu/drm/tilcdc/Kconfig"
289
290source "drivers/gpu/drm/qxl/Kconfig"
291
292source "drivers/gpu/drm/bochs/Kconfig"
293
294source "drivers/gpu/drm/virtio/Kconfig"
295
296source "drivers/gpu/drm/msm/Kconfig"
297
298source "drivers/gpu/drm/fsl-dcu/Kconfig"
299
300source "drivers/gpu/drm/tegra/Kconfig"
301
302source "drivers/gpu/drm/stm/Kconfig"
303
304source "drivers/gpu/drm/panel/Kconfig"
305
306source "drivers/gpu/drm/bridge/Kconfig"
307
308source "drivers/gpu/drm/sti/Kconfig"
309
310source "drivers/gpu/drm/imx/Kconfig"
311
312source "drivers/gpu/drm/v3d/Kconfig"
313
314source "drivers/gpu/drm/vc4/Kconfig"
315
316source "drivers/gpu/drm/etnaviv/Kconfig"
317
318source "drivers/gpu/drm/arc/Kconfig"
319
320source "drivers/gpu/drm/hisilicon/Kconfig"
321
322source "drivers/gpu/drm/mediatek/Kconfig"
323
324source "drivers/gpu/drm/zte/Kconfig"
325
326source "drivers/gpu/drm/mxsfb/Kconfig"
327
328source "drivers/gpu/drm/meson/Kconfig"
329
330source "drivers/gpu/drm/tinydrm/Kconfig"
331
332source "drivers/gpu/drm/pl111/Kconfig"
333
334source "drivers/gpu/drm/tve200/Kconfig"
335
336source "drivers/gpu/drm/xen/Kconfig"
337
338source "drivers/gpu/drm/vboxvideo/Kconfig"
339
340source "drivers/gpu/drm/lima/Kconfig"
341
342source "drivers/gpu/drm/panfrost/Kconfig"
343
344source "drivers/gpu/drm/aspeed/Kconfig"
345
346# Keep legacy drivers last
347
348menuconfig DRM_LEGACY
349	bool "Enable legacy drivers (DANGEROUS)"
350	depends on DRM && MMU
351	select DRM_VM
352	select DRM_ATI_PCIGART if PCI
353	help
354	  Enable legacy DRI1 drivers. Those drivers expose unsafe and dangerous
355	  APIs to user-space, which can be used to circumvent access
356	  restrictions and other security measures. For backwards compatibility
357	  those drivers are still available, but their use is highly
358	  inadvisable and might harm your system.
359
360	  You are recommended to use the safe modeset-only drivers instead, and
361	  perform 3D emulation in user-space.
362
363	  Unless you have strong reasons to go rogue, say "N".
364
365if DRM_LEGACY
366
367config DRM_TDFX
368	tristate "3dfx Banshee/Voodoo3+"
369	depends on DRM && PCI
370	help
371	  Choose this option if you have a 3dfx Banshee or Voodoo3 (or later),
372	  graphics card.  If M is selected, the module will be called tdfx.
373
374config DRM_R128
375	tristate "ATI Rage 128"
376	depends on DRM && PCI
377	select FW_LOADER
378	help
379	  Choose this option if you have an ATI Rage 128 graphics card.  If M
380	  is selected, the module will be called r128.  AGP support for
381	  this card is strongly suggested (unless you have a PCI version).
382
383config DRM_I810
384	tristate "Intel I810"
385	# !PREEMPT because of missing ioctl locking
386	depends on DRM && AGP && AGP_INTEL && (!PREEMPT || BROKEN)
387	help
388	  Choose this option if you have an Intel I810 graphics card.  If M is
389	  selected, the module will be called i810.  AGP support is required
390	  for this driver to work.
391
392config DRM_MGA
393	tristate "Matrox g200/g400"
394	depends on DRM && PCI
395	select FW_LOADER
396	help
397	  Choose this option if you have a Matrox G200, G400 or G450 graphics
398	  card.  If M is selected, the module will be called mga.  AGP
399	  support is required for this driver to work.
400
401config DRM_SIS
402	tristate "SiS video cards"
403	depends on DRM && AGP
404	depends on FB_SIS || FB_SIS=n
405	help
406	  Choose this option if you have a SiS 630 or compatible video
407	  chipset. If M is selected the module will be called sis. AGP
408	  support is required for this driver to work.
409
410config DRM_VIA
411	tristate "Via unichrome video cards"
412	depends on DRM && PCI
413	help
414	  Choose this option if you have a Via unichrome or compatible video
415	  chipset. If M is selected the module will be called via.
416
417config DRM_SAVAGE
418	tristate "Savage video cards"
419	depends on DRM && PCI
420	help
421	  Choose this option if you have a Savage3D/4/SuperSavage/Pro/Twister
422	  chipset. If M is selected the module will be called savage.
423
424endif # DRM_LEGACY
425
426# Separate option because drm_panel_orientation_quirks.c is shared with fbdev
427config DRM_PANEL_ORIENTATION_QUIRKS
428	tristate
429
430config DRM_LIB_RANDOM
431	bool
432	default n
433