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