payloads/edk2: Disable the CPU Timer Lib unless supported
[coreboot.git] / src / device / Kconfig
blobc0ba3d16146cc44260bc8bf1d544d94cc462a9fb
1 ## SPDX-License-Identifier: GPL-2.0-only
3 menu "Devices"
5 config HAVE_VGA_TEXT_FRAMEBUFFER
6         bool
7         depends on !NO_GFX_INIT
8         help
9           Selected by graphics drivers that support legacy VGA text mode.
11 config HAVE_VBE_LINEAR_FRAMEBUFFER
12         bool
13         depends on !NO_GFX_INIT
14         help
15           Selected by graphics drivers that can set up a VBE linear-framebuffer
16           mode.
18 config HAVE_LINEAR_FRAMEBUFFER
19         bool
20         depends on !NO_GFX_INIT
21         help
22           Selected by graphics drivers that can set up a generic linear
23           framebuffer.
25 config HAVE_FSP_GOP
26         bool
27         help
28           Selected by drivers that support to run a blob that implements
29           the Graphics Output Protocol (GOP).
31 config MAINBOARD_NO_FSP_GOP
32         bool
33         help
34           Selected by mainboards that do not have any graphics ports connected to the SoC.
36 config MAINBOARD_HAS_NATIVE_VGA_INIT
37         def_bool n
38         help
39           Selected by mainboards / drivers that provide native graphics
40           init within coreboot.
42 config MAINBOARD_FORCE_NATIVE_VGA_INIT
43         def_bool n
44         depends on MAINBOARD_HAS_NATIVE_VGA_INIT || MAINBOARD_HAS_LIBGFXINIT
45         help
46           Selected by mainboards / chipsets whose graphics driver can't or
47           shouldn't be disabled.
49 config VGA_ROM_RUN_DEFAULT
50         def_bool n
51         help
52           Selected by mainboards whose graphics initialization depends on VGA OpROM.
53           coreboot needs to load/execute legacy VGA OpROM in order to initialize GFX.
55 config MAINBOARD_HAS_LIBGFXINIT
56         def_bool n
57         help
58           Selected by mainboards that implement support for `libgfxinit`.
59           Usually this requires a list of ports to be probed for displays.
61 choice
62         prompt "Graphics initialization"
63         default NO_GFX_INIT if VGA_ROM_RUN_DEFAULT && PAYLOAD_SEABIOS
64         default VGA_ROM_RUN if VGA_ROM_RUN_DEFAULT
65         default MAINBOARD_DO_NATIVE_VGA_INIT
66         default MAINBOARD_USE_LIBGFXINIT
67         default RUN_FSP_GOP if INTEL_GMA_HAVE_VBT
69 config MAINBOARD_DO_NATIVE_VGA_INIT
70         bool "Use native graphics init"
71         depends on MAINBOARD_HAS_NATIVE_VGA_INIT
72         help
73           Some mainboards, such as the Google Link, allow initializing the
74           display without the need of a binary only VGA OPROM. Enabling this
75           option may be faster, but also lacks flexibility in setting modes.
77 config MAINBOARD_USE_LIBGFXINIT
78         bool "Use libgfxinit"
79         depends on MAINBOARD_HAS_LIBGFXINIT
80         select HAVE_VGA_TEXT_FRAMEBUFFER
81         select HAVE_LINEAR_FRAMEBUFFER
82         select VGA if VGA_TEXT_FRAMEBUFFER
83         help
84           Use the SPARK library `libgfxinit` for the native graphics
85           initialization. This requires an Ada toolchain.
87 # TODO: Explain differences (if any) for onboard cards.
88 config VGA_ROM_RUN
89         bool "Run VGA Option ROMs"
90         depends on PCI && (ARCH_X86 || ARCH_PPC64) && !MAINBOARD_FORCE_NATIVE_VGA_INIT
91         select HAVE_VGA_TEXT_FRAMEBUFFER
92         help
93           Execute VGA Option ROMs in coreboot if found. This can be used
94           to enable PCI/AGP/PCI-E video cards when not using a SeaBIOS
95           payload.
97           When using a SeaBIOS payload it runs all option ROMs with much
98           more complete BIOS interrupt services available than coreboot,
99           which some option ROMs require in order to function correctly.
101 config RUN_FSP_GOP
102         bool "Run a GOP driver"
103         depends on HAVE_FSP_GOP && !MAINBOARD_NO_FSP_GOP
104         select HAVE_LINEAR_FRAMEBUFFER
105         help
106           Some platforms (e.g. Intel Braswell and Skylake/Kaby Lake) support
107           to run a GOP blob. This option enables graphics initialization with
108           such a blob.
110 config NO_GFX_INIT
111         bool "None"
112         depends on !MAINBOARD_FORCE_NATIVE_VGA_INIT
113         help
114           Select this to not perform any graphics initialization in
115           coreboot. This is useful if the payload (e.g. SeaBIOS) can
116           initialize graphics or if pre-boot graphics are not required.
118 endchoice
120 config PRE_GRAPHICS_DELAY_MS
121         int "Graphics initialization delay in ms"
122         default 0
123         depends on VGA_ROM_RUN
124         help
125           On some systems, coreboot boots so fast that connected monitors
126           (mostly TVs) won't be able to wake up fast enough to talk to the
127           VBIOS. On those systems we need to wait for a bit before executing
128           the VBIOS.
130 config ONBOARD_VGA_IS_PRIMARY
131         bool "Use onboard VGA as primary video device"
132         default n
133         depends on PCI
134         help
135           This option lets you select which VGA device will be used
136           to decode legacy VGA cycles. Not all chipsets implement this
137           however. If not selected, the last adapter found will be used,
138           else the onboard adapter is used.
140 config S3_VGA_ROM_RUN
141         bool "Re-run VGA Option ROMs on S3 resume"
142         default y
143         depends on VGA_ROM_RUN && HAVE_ACPI_RESUME
144         help
145           Execute VGA Option ROMs in coreboot when resuming from S3 suspend.
147           When using a SeaBIOS payload it runs all option ROMs with much
148           more complete BIOS interrupt services available than coreboot,
149           which some option ROMs require in order to function correctly.
151           If unsure, say N when using SeaBIOS as payload, Y otherwise.
153 config ALWAYS_LOAD_OPROM
154         def_bool n
155         depends on VGA_ROM_RUN
156         help
157           Always load option ROMs if any are found. The decision to run
158           the ROM is still determined at runtime, but the distinction
159           between loading and not running comes into play for CHROMEOS.
161           An example where this is required is that VBT (Video BIOS Tables)
162           are needed for the kernel's display driver to know how a piece of
163           hardware is configured to be used.
165 config ALWAYS_RUN_OPROM
166         def_bool n
167         depends on VGA_ROM_RUN && ALWAYS_LOAD_OPROM
168         help
169           Always unconditionally run the option regardless of other
170           policies.
172 config ON_DEVICE_ROM_LOAD
173         bool "Load Option ROMs on PCI devices"
174         default n if PAYLOAD_SEABIOS
175         default y if !PAYLOAD_SEABIOS
176         depends on VGA_ROM_RUN
177         help
178           Load Option ROMs stored on PCI/PCIe/AGP VGA devices in coreboot.
180           If disabled, only Option ROMs stored in CBFS will be executed by
181           coreboot. If you are concerned about security, you might want to
182           disable this option, but it might leave your system in a state of
183           degraded functionality.
185           When using a SeaBIOS payload it runs all option ROMs with much
186           more complete BIOS interrupt services available than coreboot,
187           which some option ROMs require in order to function correctly.
189           If unsure, say N when using SeaBIOS as payload, Y otherwise.
191 choice
192         prompt "Option ROM execution type"
193         default PCI_OPTION_ROM_RUN_YABEL if !ARCH_X86
194         default PCI_OPTION_ROM_RUN_REALMODE if ARCH_X86
195         depends on VGA_ROM_RUN
197 config PCI_OPTION_ROM_RUN_REALMODE
198         prompt "Native mode"
199         bool
200         depends on ARCH_X86
201         help
202           If you select this option, PCI Option ROMs will be executed
203           natively on the CPU in real mode. No CPU emulation is involved,
204           so this is the fastest, but also the least secure option.
205           (only works on x86/x64 systems)
207 config PCI_OPTION_ROM_RUN_YABEL
208         prompt "Secure mode"
209         bool
210         help
211           If you select this option, the x86emu CPU emulator will be used to
212           execute PCI Option ROMs.
214           This option prevents Option ROMs from doing dirty tricks with the
215           system (such as installing SMM modules or hypervisors), but it is
216           also significantly slower than the native Option ROM initialization
217           method.
219           This is the default choice for non-x86 systems.
221 endchoice
223 config YABEL_PCI_ACCESS_OTHER_DEVICES
224         prompt "Allow Option ROMs to access other devices"
225         bool
226         depends on PCI_OPTION_ROM_RUN_YABEL
227         help
228           Per default, YABEL only allows Option ROMs to access the PCI device
229           that they are associated with. However, this causes trouble for some
230           onboard graphics chips whose Option ROM needs to reconfigure the
231           north bridge.
233 config YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG
234         prompt "Fake success on writing other device's config space"
235         bool
236         depends on YABEL_PCI_ACCESS_OTHER_DEVICES
237         help
238           By default, YABEL aborts when the Option ROM tries to write to other
239           devices' config spaces. With this option enabled, the write doesn't
240           follow through, but the Option ROM is allowed to go on.
241           This can create issues such as hanging Option ROMs (if it depends on
242           that other register changing to the written value), so test for
243           impact before using this option.
245 config YABEL_VIRTMEM_LOCATION
246         prompt "Location of YABEL's virtual memory"
247         hex
248         depends on PCI_OPTION_ROM_RUN_YABEL
249         default 0x1000000
250         help
251           YABEL requires 1MB memory for its CPU emulation. This memory is
252           normally located at 16MB.
254 config YABEL_DIRECTHW
255         prompt "Direct hardware access"
256         bool
257         depends on PCI_OPTION_ROM_RUN_YABEL && ARCH_X86
258         help
259           YABEL consists of two parts: It uses x86emu for the CPU emulation and
260           additionally provides a PC system emulation that filters bad device
261           and memory access (such as PCI config space access to other devices
262           than the initialized one).
264           When choosing this option, x86emu will pass through all hardware
265           accesses to memory and I/O devices to the underlying memory and I/O
266           addresses. While this option prevents Option ROMs from doing dirty
267           tricks with the CPU (such as installing SMM modules or hypervisors),
268           they can still access all devices in the system.
269           Enable this option for a good compromise between security and speed.
271 config MULTIPLE_VGA_ADAPTERS
272         bool
273         default n
275 menu "Display"
276         depends on HAVE_VGA_TEXT_FRAMEBUFFER || HAVE_LINEAR_FRAMEBUFFER
278 config FRAMEBUFFER_SET_VESA_MODE
279         prompt "Set framebuffer graphics resolution"
280         bool
281         default y if CHROMEOS
282         depends on PCI_OPTION_ROM_RUN_YABEL || PCI_OPTION_ROM_RUN_REALMODE
283         select HAVE_VBE_LINEAR_FRAMEBUFFER
284         help
285           Set VESA/native framebuffer mode (needed for bootsplash and graphical framebuffer console)
287 if FRAMEBUFFER_SET_VESA_MODE
289 choice
290         prompt "framebuffer graphics resolution"
291         default FRAMEBUFFER_VESA_MODE_118
292         help
293           This option sets the resolution used for the coreboot framebuffer (and
294           bootsplash screen).
296 config FRAMEBUFFER_VESA_MODE_100
297         bool "640x400 256-color"
299 config FRAMEBUFFER_VESA_MODE_101
300         bool "640x480 256-color"
302 config FRAMEBUFFER_VESA_MODE_102
303         bool "800x600 16-color"
305 config FRAMEBUFFER_VESA_MODE_103
306         bool "800x600 256-color"
308 config FRAMEBUFFER_VESA_MODE_104
309         bool "1024x768 16-color"
311 config FRAMEBUFFER_VESA_MODE_105
312         bool "1024x768 256-color"
314 config FRAMEBUFFER_VESA_MODE_106
315         bool "1280x1024 16-color"
317 config FRAMEBUFFER_VESA_MODE_107
318         bool "1280x1024 256-color"
320 config FRAMEBUFFER_VESA_MODE_108
321         bool "80x60 text"
323 config FRAMEBUFFER_VESA_MODE_109
324         bool "132x25 text"
326 config FRAMEBUFFER_VESA_MODE_10A
327         bool "132x43 text"
329 config FRAMEBUFFER_VESA_MODE_10B
330         bool "132x50 text"
332 config FRAMEBUFFER_VESA_MODE_10C
333         bool "132x60 text"
335 config FRAMEBUFFER_VESA_MODE_10D
336         bool "320x200 32k-color (1:5:5:5)"
338 config FRAMEBUFFER_VESA_MODE_10E
339         bool "320x200 64k-color (5:6:5)"
341 config FRAMEBUFFER_VESA_MODE_10F
342         bool "320x200 16.8M-color (8:8:8)"
344 config FRAMEBUFFER_VESA_MODE_110
345         bool "640x480 32k-color (1:5:5:5)"
347 config FRAMEBUFFER_VESA_MODE_111
348         bool "640x480 64k-color (5:6:5)"
350 config FRAMEBUFFER_VESA_MODE_112
351         bool "640x480 16.8M-color (8:8:8)"
353 config FRAMEBUFFER_VESA_MODE_113
354         bool "800x600 32k-color (1:5:5:5)"
356 config FRAMEBUFFER_VESA_MODE_114
357         bool "800x600 64k-color (5:6:5)"
359 config FRAMEBUFFER_VESA_MODE_115
360         bool "800x600 16.8M-color (8:8:8)"
362 config FRAMEBUFFER_VESA_MODE_116
363         bool "1024x768 32k-color (1:5:5:5)"
365 config FRAMEBUFFER_VESA_MODE_117
366         bool "1024x768 64k-color (5:6:5)"
368 config FRAMEBUFFER_VESA_MODE_118
369         bool "1024x768 16.8M-color (8:8:8)"
371 config FRAMEBUFFER_VESA_MODE_119
372         bool "1280x1024 32k-color (1:5:5:5)"
374 config FRAMEBUFFER_VESA_MODE_11A
375         bool "1280x1024 64k-color (5:6:5)"
377 config FRAMEBUFFER_VESA_MODE_11B
378         bool "1280x1024 16.8M-color (8:8:8)"
380 config FRAMEBUFFER_VESA_MODE_USER
381         bool "Manually select VESA mode"
383 endchoice
385 # Map the config names to an integer (KB).
386 config FRAMEBUFFER_VESA_MODE
387         prompt "VESA mode" if FRAMEBUFFER_VESA_MODE_USER
388         hex
389         default 0x100 if FRAMEBUFFER_VESA_MODE_100
390         default 0x101 if FRAMEBUFFER_VESA_MODE_101
391         default 0x102 if FRAMEBUFFER_VESA_MODE_102
392         default 0x103 if FRAMEBUFFER_VESA_MODE_103
393         default 0x104 if FRAMEBUFFER_VESA_MODE_104
394         default 0x105 if FRAMEBUFFER_VESA_MODE_105
395         default 0x106 if FRAMEBUFFER_VESA_MODE_106
396         default 0x107 if FRAMEBUFFER_VESA_MODE_107
397         default 0x108 if FRAMEBUFFER_VESA_MODE_108
398         default 0x109 if FRAMEBUFFER_VESA_MODE_109
399         default 0x10A if FRAMEBUFFER_VESA_MODE_10A
400         default 0x10B if FRAMEBUFFER_VESA_MODE_10B
401         default 0x10C if FRAMEBUFFER_VESA_MODE_10C
402         default 0x10D if FRAMEBUFFER_VESA_MODE_10D
403         default 0x10E if FRAMEBUFFER_VESA_MODE_10E
404         default 0x10F if FRAMEBUFFER_VESA_MODE_10F
405         default 0x110 if FRAMEBUFFER_VESA_MODE_110
406         default 0x111 if FRAMEBUFFER_VESA_MODE_111
407         default 0x112 if FRAMEBUFFER_VESA_MODE_112
408         default 0x113 if FRAMEBUFFER_VESA_MODE_113
409         default 0x114 if FRAMEBUFFER_VESA_MODE_114
410         default 0x115 if FRAMEBUFFER_VESA_MODE_115
411         default 0x116 if FRAMEBUFFER_VESA_MODE_116
412         default 0x117 if FRAMEBUFFER_VESA_MODE_117
413         default 0x118 if FRAMEBUFFER_VESA_MODE_118
414         default 0x119 if FRAMEBUFFER_VESA_MODE_119
415         default 0x11A if FRAMEBUFFER_VESA_MODE_11A
416         default 0x11B if FRAMEBUFFER_VESA_MODE_11B
417         default 0x118 if FRAMEBUFFER_VESA_MODE_USER
418 endif # FRAMEBUFFER_SET_VESA_MODE
420 config WANT_LINEAR_FRAMEBUFFER
421         bool
422         default y if CHROMEOS
423         default y if PAYLOAD_EDK2
424         default y if COREDOOM_SECONDARY_PAYLOAD
426 choice
427         prompt "Framebuffer mode"
428         default VBE_LINEAR_FRAMEBUFFER if HAVE_VBE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER
429         default GENERIC_LINEAR_FRAMEBUFFER if HAVE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER
430         default VGA_TEXT_FRAMEBUFFER
432 config VGA_TEXT_FRAMEBUFFER
433         bool "Legacy VGA text mode"
434         depends on HAVE_VGA_TEXT_FRAMEBUFFER
435         help
436           If this option is enabled, coreboot will initialize graphics in
437           legacy VGA text mode or, if a VGA BIOS is used and a VESA mode set,
438           switch to text mode before handing control to a payload.
440 config VBE_LINEAR_FRAMEBUFFER
441         bool "VESA framebuffer"
442         depends on HAVE_VBE_LINEAR_FRAMEBUFFER
443         help
444           This option keeps the framebuffer mode set after coreboot finishes
445           execution. If this option is enabled, coreboot will pass a
446           framebuffer entry in its coreboot table and the payload will need a
447           compatible driver.
449 config GENERIC_LINEAR_FRAMEBUFFER
450         bool "Linear \"high-resolution\" framebuffer"
451         depends on HAVE_LINEAR_FRAMEBUFFER
452         help
453           This option enables a high-resolution, linear framebuffer. If this
454           option is enabled, coreboot will pass a framebuffer entry in its
455           coreboot table and the payload will need a compatible driver.
457 endchoice
459 # Workaround to have LINEAR_FRAMEBUFFER set in both cases
460 # VBE_LINEAR_FRAMEBUFFER and GENERIC_LINEAR_FRAMEBUFFER.
461 # `kconfig_lint` doesn't let us use the same name with
462 # different texts in the choice above.
463 config LINEAR_FRAMEBUFFER
464         def_bool y
465         depends on VBE_LINEAR_FRAMEBUFFER || GENERIC_LINEAR_FRAMEBUFFER
467 config BOOTSPLASH
468         prompt "Show graphical bootsplash"
469         bool
470         depends on LINEAR_FRAMEBUFFER
471         help
472           This option shows a graphical bootsplash screen. The graphics are
473           loaded from the CBFS file bootsplash.jpg.
475           You can either specify the location and file name of the
476           image in the 'General' section or add it manually to CBFS, using,
477           for example, cbfstool.
479 config LINEAR_FRAMEBUFFER_MAX_WIDTH
480         int "Maximum width in pixels"
481         depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
482         default 2560
483         help
484           Set the maximum width of the framebuffer. This may help with
485           default fonts too tiny for high-resolution displays.
487 config LINEAR_FRAMEBUFFER_MAX_HEIGHT
488         int "Maximum height in pixels"
489         depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
490         default 1600
491         help
492           Set the maximum height of the framebuffer. This may help with
493           default fonts too tiny for high-resolution displays.
495 endmenu # "Display"
497 config PCI
498         bool
499         default n
501 if PCI
503 config NO_ECAM_MMCONF_SUPPORT
504         bool
505         default n
506         help
507           Disable the use of the Enhanced Configuration
508           Access mechanism (ECAM) method for accessing PCI config
509           address space.
511 config ECAM_MMCONF_SUPPORT
512         bool
513         default !NO_ECAM_MMCONF_SUPPORT
514         help
515           Enable the use of the Enhanced Configuration
516           Access mechanism (ECAM) method for accessing PCI config
517           address space.
519 config PCIX_PLUGIN_SUPPORT
520         bool
521         default y
523 config CARDBUS_PLUGIN_SUPPORT
524         bool
525         default y
527 config AZALIA_PLUGIN_SUPPORT
528         bool
529         default n
531 config AZALIA_LOCK_DOWN_R_WO_GCAP
532         def_bool n
533         depends on AZALIA_PLUGIN_SUPPORT
534         help
535           The GCAP register is implemented as R/WO (Read / Write Once) on some
536           HD Audio controllers, such as Intel 6-series PCHs. Select this option
537           to lock down the GCAP register after deasserting the controller reset
538           bit. Locking is done by reading GCAP and writing back the read value.
540 config PCIEXP_PLUGIN_SUPPORT
541         bool
542         default y
544 config ECAM_MMCONF_BASE_ADDRESS
545         hex
546         depends on ECAM_MMCONF_SUPPORT
548 config ECAM_MMCONF_BUS_NUMBER
549         int
550         depends on ECAM_MMCONF_SUPPORT
552 config ECAM_MMCONF_LENGTH
553         hex
554         depends on ECAM_MMCONF_SUPPORT
555         default 0x04000000 if ECAM_MMCONF_BUS_NUMBER = 64
556         default 0x08000000 if ECAM_MMCONF_BUS_NUMBER = 128
557         default 0x10000000 if ECAM_MMCONF_BUS_NUMBER = 256
558         default 0x0
560 config PCI_ALLOW_BUS_MASTER
561         bool "Allow coreboot to set optional PCI bus master bits"
562         default y
563         help
564           For security reasons, bus mastering should be enabled as late as
565           possible. In coreboot, it's usually not necessary and payloads
566           should only enable it for devices they use. Since not all payloads
567           enable bus mastering properly yet, this option gives some sort of
568           "backwards compatibility" and is enabled by default to keep the
569           traditional behaviour for now. This is currently necessary, for
570           instance, for libpayload based payloads as the drivers don't enable
571           bus mastering for PCI bridges.
573 if PCI_ALLOW_BUS_MASTER
575 config PCI_SET_BUS_MASTER_PCI_BRIDGES
576         bool "PCI bridges"
577         default y
578         help
579           Let coreboot configure bus mastering for PCI bridges. Enabling bus
580           mastering for a PCI bridge also allows it to forward requests from
581           downstream devices. Currently, payloads ignore this and only enable
582           bus mastering for the downstream device. Hence, this option is needed
583           for compatibility until payloads are fixed.
585 config PCI_ALLOW_BUS_MASTER_ANY_DEVICE
586         bool "Any devices"
587         default y
588         select PCI_SET_BUS_MASTER_PCI_BRIDGES
589         help
590           Allow coreboot to enable PCI bus mastering for any device. The actual
591           selection of devices depends on the various PCI drivers in coreboot.
593 endif # PCI_ALLOW_BUS_MASTER
595 endif # PCI
597 if PCIEXP_PLUGIN_SUPPORT
599 config PCIEXP_COMMON_CLOCK
600         prompt "Enable PCIe Common Clock"
601         bool
602         default n
603         help
604           Detect and enable Common Clock on PCIe links.
606 config PCIEXP_ASPM
607         prompt "Enable PCIe ASPM"
608         bool
609         default n
610         help
611           Detect and enable ASPM (Active State Power Management) on PCIe links.
613 config PCIEXP_CLK_PM
614         prompt "Enable PCIe Clock Power Management"
615         bool
616         default n
617         help
618           Detect and enable Clock Power Management on PCIe.
620 config PCIEXP_L1_SUB_STATE
621         prompt "Enable PCIe ASPM L1 SubState"
622         bool
623         depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT)
624         default n
625         help
626           Detect and enable ASPM on PCIe links.
628 config PCIEXP_SUPPORT_RESIZABLE_BARS
629         prompt "Support PCIe Resizable BARs"
630         bool
631         depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT)
632         default n
633         help
634           When enabled, this will check PCIe devices for Resizable BAR support,
635           and if found, will use this to discover the preferred BAR sizes of
636           the device in preference over the traditional moving bits method. The
637           amount of address space given out to devices in this manner (since
638           it can range up to 8 EB) can be limited with the
639           PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS Kconfig setting below.
641 if PCIEXP_SUPPORT_RESIZABLE_BARS
643 config PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS
644         int "Bits of address space to give to Resizable BARs"
645         range 20 63     # 1 MiB - 8 EiB
646         default 29      # 512 MiB
647         help
648           This is the maximum number of bits of address space to allocate for
649           PCIe devices with resizable BARs. For instance, if a device requests
650           30 bits of address space (1 GiB), but this field is set to 29, then
651           the device will only be allocated 29 bits worth of address space (512
652           MiB). Valid values range from 20 (1 MiB) to 63 (8 EiB); these come
653           from the Resizable BAR portion of the PCIe spec (7.8.6).
655 endif # PCIEXP_SUPPORT_RESIZABLE_BARS
657 config PCIEXP_LANE_ERR_STAT_CLEAR
658         prompt "Enable Clear PCIe Lane Error Status"
659         bool
660         default n
661         help
662           Clear the PCIe Lane Error Status at the end of link training.
664 config PCIEXP_HOTPLUG
665         prompt "Enable PCIe Hotplug Support"
666         bool
667         default n
668         help
669           Allocate resources for PCIe hotplug bridges
671 if PCIEXP_HOTPLUG
673 config PCIEXP_HOTPLUG_BUSES
674         int "PCI Express Hotplug Buses"
675         default  8 if ECAM_MMCONF_SUPPORT && ECAM_MMCONF_BUS_NUMBER <=  64
676         default 16 if ECAM_MMCONF_SUPPORT && ECAM_MMCONF_BUS_NUMBER <= 128
677         default 32
678         help
679           This is the number of buses allocated for hotplug PCI express
680           bridges, for use by hotplugged child devices. The default is 32
681           buses.
683 config PCIEXP_HOTPLUG_MEM
684         hex "PCI Express Hotplug Memory"
685         default 0x800000
686         help
687           This is the amount of memory space, in bytes, to allocate to
688           hotplug PCI express bridges, for use by hotplugged child devices.
689           This size should be page-aligned. The default is 8 MiB.
691 config PCIEXP_HOTPLUG_PREFETCH_MEM
692         hex "PCI Express Hotplug Prefetch Memory"
693         default 0x10000000
694         help
695           This is the amount of pre-fetchable memory space, in bytes, to
696           allocate to hot-plug PCI express bridges, for use by hotplugged
697           child devices. This size should be page-aligned. The default is
698           256 MiB.
700 config PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G
701         bool
702         depends on RESOURCE_ALLOCATOR_V4
703         default y if !PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
704         default n
705         help
706           This enables prefetch memory allocation above 4G boundary for the
707           hotplug resources.
709 config PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
710         bool "PCI Express Hotplug Prefetch Memory Allocation below 4G boundary"
711         default n
712         help
713           This enables prefetch memory allocation below 4G boundary for the
714           hotplug resources.
716 config PCIEXP_HOTPLUG_IO
717         hex "PCI Express Hotplug I/O Space"
718         default 0x2000
719         help
720           This is the amount of I/O space to allocate to hot-plug PCI
721           express bridges, for use by hotplugged child devices. The default
722           is 8 KiB.
724 endif # PCIEXP_HOTPLUG
726 endif # PCIEXP_PLUGIN_SUPPORT
728 config EARLY_PCI_BRIDGE
729         bool "Early PCI bridge"
730         depends on PCI
731         default n
732         help
733           While coreboot is executing code from ROM, the coreboot resource
734           allocator has not been running yet. Hence PCI devices living behind
735           a bridge are not yet visible to the system.
737           This option enables static configuration for a single pre-defined
738           PCI bridge function on bus 0.
740 if EARLY_PCI_BRIDGE
742 config EARLY_PCI_BRIDGE_DEVICE
743         hex "bridge device"
744         default 0x0
746 config EARLY_PCI_BRIDGE_FUNCTION
747         hex "bridge function"
748         default 0x0
750 config EARLY_PCI_MMIO_BASE
751         hex "MMIO window base"
752         default 0x0
754 endif # EARLY_PCI_BRIDGE
756 config SUBSYSTEM_VENDOR_ID
757         hex "Override PCI Subsystem Vendor ID"
758         depends on PCI
759         default 0x0000
760         help
761           This config option will override the devicetree settings for
762           PCI Subsystem Vendor ID.
764           Note: This option is not meant for a board's Kconfig; use the
765           devicetree setting `subsystemid` instead.
767 config SUBSYSTEM_DEVICE_ID
768         hex "Override PCI Subsystem Device ID"
769         depends on PCI
770         default 0x0000
771         help
772           This config option will override the devicetree settings for
773           PCI Subsystem Device ID.
775           Note: This option is not meant for a board's Kconfig; use the
776           devicetree setting `subsystemid` instead.
778 config VGA_BIOS
779         bool "Add a VGA BIOS image"
780         depends on ARCH_X86
781         select VGA_ROM_RUN_DEFAULT
782         help
783           Select this option if you have a VGA BIOS image that you would
784           like to add to your ROM.
786           You will be able to specify the location and file name of the
787           image later.
789 config VGA_BIOS_FILE
790         string "VGA BIOS path and filename"
791         depends on VGA_BIOS
792         default "vgabios.bin"
793         help
794           The path and filename of the file to use as VGA BIOS.
796 config VGA_BIOS_ID
797         string "VGA device PCI IDs"
798         depends on VGA_BIOS
799         default "1106,3230"
800         help
801           The comma-separated PCI vendor and device ID with optional revision if that
802           feature is enabled that would associate your vBIOS to your video card.
804           Example: 1106,3230 or 1106,3230,a3
806           In the above example 1106 is the PCI vendor ID (in hex, but without
807           the "0x" prefix) and 3230 specifies the PCI device ID of the
808           video card (also in hex, without "0x" prefix). a3 specifies the revision.
810           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
812 config VGA_BIOS_SECOND
813         bool "Add a 2nd video BIOS image"
814         depends on ARCH_X86 && VGA_BIOS
815         help
816           Select this option if you have a 2nd video BIOS image that you would
817           like to add to your ROM.
819 config VGA_BIOS_SECOND_FILE
820         string "2nd video BIOS path and filename"
821         depends on VGA_BIOS_SECOND
822         default "vbios2.bin"
823         help
824           The path and filename of the file to use as video BIOS.
826 config VGA_BIOS_SECOND_ID
827         string "Graphics device PCI IDs"
828         depends on VGA_BIOS_SECOND
829         help
830           The comma-separated PCI vendor and device ID with optional revision if that
831           feature is enabled that would associate your vBIOS to your video card.
833           Example: 1106,3230 or 1106,3230,a3
835           In the above example 1106 is the PCI vendor ID (in hex, but without
836           the "0x" prefix) and 3230 specifies the PCI device ID of the
837           video card (also in hex, without "0x" prefix). a3 specifies the revision.
839           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
841 config CHECK_REV_IN_OPROM_NAME
842         def_bool n
843         help
844           Select this in the platform BIOS or chipset if the option rom has a revision
845           that needs to be checked when searching CBFS.
847 config VGA_BIOS_DGPU
848         bool "Add a discrete VGA BIOS image"
849         depends on VGA_BIOS
850         help
851           Select this option if you have a VGA BIOS image for discrete GPU
852           that you would like to add to your ROM.
854           You will be able to specify the location and file name of the
855           image later.
857 config VGA_BIOS_DGPU_FILE
858         string "Discrete VGA BIOS path and filename"
859         depends on VGA_BIOS_DGPU
860         default "vgabios_dgpu.bin"
861         help
862           The path and filename of the file to use as VGA BIOS for discrete GPU.
864 config VGA_BIOS_DGPU_ID
865         string "Discrete VGA device PCI IDs"
866         depends on VGA_BIOS_DGPU
867         default "1002,6663"
868         help
869           The comma-separated PCI vendor and device ID that would associate
870           your VGA BIOS to your discrete video card.
872           Examples:
873               1002,6663 for HD 8570M
874               1002,6665 for R5 M230
876           In the above examples 1002 is the PCI vendor ID (in hex, but without
877           the "0x" prefix) and 6663 / 6665 specifies the PCI device ID of the
878           discrete video card (also in hex, without "0x" prefix).
880           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
882 config INTEL_GMA_HAVE_VBT
883         bool
884         help
885           Select this in the mainboard Kconfig to indicate the board has
886           a data.vbt file.
888 config INTEL_GMA_ADD_VBT
889         depends on SOC_INTEL_COMMON || CPU_INTEL_COMMON
890         bool "Add a Video BIOS Table (VBT) binary to CBFS"
891         default y if INTEL_GMA_HAVE_VBT
892         help
893           Add a VBT data file to CBFS. The VBT describes the integrated
894           GPU and connections, and is needed by the GOP driver integrated into
895           FSP and the OS driver in order to initialize the display.
897 config INTEL_GMA_VBT_FILE
898         string "VBT binary path and filename"
899         depends on INTEL_GMA_ADD_VBT
900         default "src/mainboard/\$(MAINBOARDDIR)/variants/\$(VARIANT_DIR)/data.vbt" \
901                 if INTEL_GMA_HAVE_VBT && VARIANT_DIR != ""
902         default "src/mainboard/\$(MAINBOARDDIR)/data.vbt" if INTEL_GMA_HAVE_VBT
903         default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/vbt.bin"
904         help
905           The path and filename of the VBT binary.
907 config SOFTWARE_I2C
908         bool "Enable I2C controller emulation in software"
909         default n
910         help
911           This config option will enable code to override the i2c_transfer
912           routine with a (simple) software emulation of the protocol. This may
913           be useful for debugging or on platforms where a driver for the real
914           I2C controller is not (yet) available. The platform code needs to
915           provide bindings to manually toggle I2C lines.
917 config I2C_TRANSFER_TIMEOUT_US
918         int "I2C transfer timeout in microseconds"
919         default 500000
920         help
921           Timeout for a read/write transfers on the I2C bus, that is, the
922           maximum time a device could stretch clock bits before the transfer
923           is aborted and an error returned.
925 config RESOURCE_ALLOCATOR_V3
926         bool
927         default n
928         help
929           This config option enables resource allocator v3 which performs
930           top down allocation of resources in a single MMIO window. This is the
931           old resource allocator meant to be used only until the broken AMD
932           chipsets are fixed. DO NOT USE THIS FOR ANY NEW CHIPSETS!
934 config RESOURCE_ALLOCATOR_V4
935         bool
936         default n if RESOURCE_ALLOCATOR_V3
937         default y if !RESOURCE_ALLOCATOR_V3
938         help
939           This config option enables resource allocator v4 which uses multiple
940           ranges for allocating resources. This allows allocation of resources
941           above 4G boundary as well.
943 config RESOURCE_ALLOCATION_TOP_DOWN
944         bool "Allocate resources from top down"
945         default n
946         depends on RESOURCE_ALLOCATOR_V4
947         help
948           Should be the default, but many platforms don't report resources
949           correctly. Hence, the allocator might cause conflicts.
951 config XHCI_UTILS
952         def_bool n
953         help
954           Provides xHCI utility functions.
956 endmenu