mb/google/brya/var/orisa: Update Type C DisplayPort HPD Configuration
[coreboot2.git] / src / device / Kconfig
blobbcff6fd8b05215ffd62e8538678ff639b7df5cbc
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 && NO_EARLY_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 config MAINBOARD_HAS_EARLY_LIBGFXINIT
62         def_bool n
63         help
64           Selected by mainboards that implement early (cache-as-ram
65           stage) support of `libgfxinit`. Usually this requires a list
66           of ports to be probed for displays.
68 choice
69         prompt "Graphics initialization"
70         default NO_GFX_INIT if VGA_ROM_RUN_DEFAULT && PAYLOAD_SEABIOS
71         default VGA_ROM_RUN if VGA_ROM_RUN_DEFAULT
72         default MAINBOARD_DO_NATIVE_VGA_INIT
73         default MAINBOARD_USE_LIBGFXINIT
74         default RUN_FSP_GOP if INTEL_GMA_HAVE_VBT
76 config MAINBOARD_DO_NATIVE_VGA_INIT
77         bool "Use native graphics init"
78         depends on MAINBOARD_HAS_NATIVE_VGA_INIT
79         help
80           Some mainboards, such as the Google Link, allow initializing the
81           display without the need of a binary only VGA OPROM. Enabling this
82           option may be faster, but also lacks flexibility in setting modes.
84 config MAINBOARD_USE_LIBGFXINIT
85         bool "Use libgfxinit"
86         depends on MAINBOARD_HAS_LIBGFXINIT
87         select HAVE_VGA_TEXT_FRAMEBUFFER
88         select HAVE_LINEAR_FRAMEBUFFER
89         select VGA if VGA_TEXT_FRAMEBUFFER
90         help
91           Use the SPARK library `libgfxinit` for the native graphics
92           initialization. This requires an Ada toolchain.
94 # TODO: Explain differences (if any) for onboard cards.
95 config VGA_ROM_RUN
96         bool "Run VGA Option ROMs"
97         depends on PCI && (ARCH_X86 || ARCH_PPC64) && !MAINBOARD_FORCE_NATIVE_VGA_INIT
98         select HAVE_VGA_TEXT_FRAMEBUFFER
99         help
100           Execute VGA Option ROMs in coreboot if found. This can be used
101           to enable PCI/AGP/PCI-E video cards when not using a SeaBIOS
102           payload.
104           When using a SeaBIOS payload it runs all option ROMs with much
105           more complete BIOS interrupt services available than coreboot,
106           which some option ROMs require in order to function correctly.
108 config RUN_FSP_GOP
109         bool "Run a GOP driver"
110         depends on HAVE_FSP_GOP && !MAINBOARD_NO_FSP_GOP
111         select HAVE_LINEAR_FRAMEBUFFER
112         help
113           Some platforms (e.g. Intel Braswell and Skylake/Kaby Lake) support
114           to run a GOP blob. This option enables graphics initialization with
115           such a blob.
117 config NO_GFX_INIT
118         bool "None"
119         depends on !MAINBOARD_FORCE_NATIVE_VGA_INIT
120         help
121           Select this to not perform any graphics initialization in
122           coreboot. This is useful if the payload (e.g. SeaBIOS) can
123           initialize graphics or if pre-boot graphics are not required.
125 endchoice
127 choice
128         prompt "Early (romstage) graphics initialization"
129         default MAINBOARD_USE_EARLY_LIBGFXINIT if MAINBOARD_HAS_EARLY_LIBGFXINIT
130         default NO_EARLY_GFX_INIT
132 config NO_EARLY_GFX_INIT
133         bool "None"
134         help
135           Select this to not perform any graphics initialization at
136           romstage.
138 config MAINBOARD_USE_EARLY_LIBGFXINIT
139         bool "Use libgfxinit"
140         depends on MAINBOARD_HAS_EARLY_LIBGFXINIT
141         select ROMSTAGE_VGA
142         help
143           Use the SPARK library `libgfxinit` for the romstage native
144           graphics initialization. This requires an Ada
145           toolchain. Graphics at romstage is limited to VGA text mode.
147 endchoice
149 config PRE_GRAPHICS_DELAY_MS
150         int "Graphics initialization delay in ms"
151         default 0
152         depends on VGA_ROM_RUN
153         help
154           On some systems, coreboot boots so fast that connected monitors
155           (mostly TVs) won't be able to wake up fast enough to talk to the
156           VBIOS. On those systems we need to wait for a bit before executing
157           the VBIOS.
159 config ONBOARD_VGA_IS_PRIMARY
160         bool "Use onboard VGA as primary video device"
161         default n
162         depends on PCI
163         help
164           This option lets you select which VGA device will be used
165           to decode legacy VGA cycles. Not all chipsets implement this
166           however. If not selected, the last adapter found will be used,
167           else the onboard adapter is used.
169 config S3_VGA_ROM_RUN
170         bool "Re-run VGA Option ROMs on S3 resume"
171         default y
172         depends on VGA_ROM_RUN && HAVE_ACPI_RESUME
173         help
174           Execute VGA Option ROMs in coreboot when resuming from S3 suspend.
176           When using a SeaBIOS payload it runs all option ROMs with much
177           more complete BIOS interrupt services available than coreboot,
178           which some option ROMs require in order to function correctly.
180           If unsure, say N when using SeaBIOS as payload, Y otherwise.
182 config ALWAYS_LOAD_OPROM
183         def_bool n
184         depends on VGA_ROM_RUN
185         help
186           Always load option ROMs if any are found. The decision to run
187           the ROM is still determined at runtime, but the distinction
188           between loading and not running comes into play for CHROMEOS.
190           An example where this is required is that VBT (Video BIOS Tables)
191           are needed for the kernel's display driver to know how a piece of
192           hardware is configured to be used.
194 config ALWAYS_RUN_OPROM
195         def_bool n
196         depends on VGA_ROM_RUN && ALWAYS_LOAD_OPROM
197         help
198           Always unconditionally run the option regardless of other
199           policies.
201 config ON_DEVICE_ROM_LOAD
202         bool "Load Option ROMs on PCI devices"
203         default n if PAYLOAD_SEABIOS
204         default y if !PAYLOAD_SEABIOS
205         depends on VGA_ROM_RUN
206         help
207           Load Option ROMs stored on PCI/PCIe/AGP VGA devices in coreboot.
209           If disabled, only Option ROMs stored in CBFS will be executed by
210           coreboot. If you are concerned about security, you might want to
211           disable this option, but it might leave your system in a state of
212           degraded functionality.
214           When using a SeaBIOS payload it runs all option ROMs with much
215           more complete BIOS interrupt services available than coreboot,
216           which some option ROMs require in order to function correctly.
218           If unsure, say N when using SeaBIOS as payload, Y otherwise.
220 choice
221         prompt "Option ROM execution type"
222         default PCI_OPTION_ROM_RUN_YABEL if !ARCH_X86
223         default PCI_OPTION_ROM_RUN_REALMODE if ARCH_X86
224         depends on VGA_ROM_RUN
226 config PCI_OPTION_ROM_RUN_REALMODE
227         prompt "Native mode"
228         bool
229         depends on ARCH_X86 && !ARCH_RAMSTAGE_X86_64
230         help
231           If you select this option, PCI Option ROMs will be executed
232           natively on the CPU in real mode. No CPU emulation is involved,
233           so this is the fastest, but also the least secure option.
234           (only works on x86/x64 systems)
236 config PCI_OPTION_ROM_RUN_YABEL
237         prompt "Secure mode"
238         bool
239         help
240           If you select this option, the x86emu CPU emulator will be used to
241           execute PCI Option ROMs.
243           This option prevents Option ROMs from doing dirty tricks with the
244           system (such as installing SMM modules or hypervisors), but it is
245           also significantly slower than the native Option ROM initialization
246           method.
248           This is the default choice for non-x86 systems.
250 endchoice
252 config YABEL_PCI_ACCESS_OTHER_DEVICES
253         prompt "Allow Option ROMs to access other devices"
254         bool
255         depends on PCI_OPTION_ROM_RUN_YABEL
256         help
257           Per default, YABEL only allows Option ROMs to access the PCI device
258           that they are associated with. However, this causes trouble for some
259           onboard graphics chips whose Option ROM needs to reconfigure the
260           north bridge.
262 config YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG
263         prompt "Fake success on writing other device's config space"
264         bool
265         depends on YABEL_PCI_ACCESS_OTHER_DEVICES
266         help
267           By default, YABEL aborts when the Option ROM tries to write to other
268           devices' config spaces. With this option enabled, the write doesn't
269           follow through, but the Option ROM is allowed to go on.
270           This can create issues such as hanging Option ROMs (if it depends on
271           that other register changing to the written value), so test for
272           impact before using this option.
274 config YABEL_VIRTMEM_LOCATION
275         prompt "Location of YABEL's virtual memory"
276         hex
277         depends on PCI_OPTION_ROM_RUN_YABEL
278         default 0x1000000
279         help
280           YABEL requires 1MB memory for its CPU emulation. This memory is
281           normally located at 16MB.
283 config YABEL_DIRECTHW
284         prompt "Direct hardware access"
285         bool
286         depends on PCI_OPTION_ROM_RUN_YABEL && ARCH_X86
287         help
288           YABEL consists of two parts: It uses x86emu for the CPU emulation and
289           additionally provides a PC system emulation that filters bad device
290           and memory access (such as PCI config space access to other devices
291           than the initialized one).
293           When choosing this option, x86emu will pass through all hardware
294           accesses to memory and I/O devices to the underlying memory and I/O
295           addresses. While this option prevents Option ROMs from doing dirty
296           tricks with the CPU (such as installing SMM modules or hypervisors),
297           they can still access all devices in the system.
298           Enable this option for a good compromise between security and speed.
300 menu "Display"
301         depends on HAVE_VGA_TEXT_FRAMEBUFFER || HAVE_LINEAR_FRAMEBUFFER
303 config FRAMEBUFFER_SET_VESA_MODE
304         prompt "Set framebuffer graphics resolution"
305         bool
306         default y if CHROMEOS
307         depends on PCI_OPTION_ROM_RUN_YABEL || PCI_OPTION_ROM_RUN_REALMODE
308         select HAVE_VBE_LINEAR_FRAMEBUFFER
309         help
310           Set VESA/native framebuffer mode (needed for bootsplash and graphical framebuffer console)
312 if FRAMEBUFFER_SET_VESA_MODE
314 choice
315         prompt "framebuffer graphics resolution"
316         default FRAMEBUFFER_VESA_MODE_118
317         help
318           This option sets the resolution used for the coreboot framebuffer (and
319           bootsplash screen).
321 config FRAMEBUFFER_VESA_MODE_100
322         bool "640x400 256-color"
324 config FRAMEBUFFER_VESA_MODE_101
325         bool "640x480 256-color"
327 config FRAMEBUFFER_VESA_MODE_102
328         bool "800x600 16-color"
330 config FRAMEBUFFER_VESA_MODE_103
331         bool "800x600 256-color"
333 config FRAMEBUFFER_VESA_MODE_104
334         bool "1024x768 16-color"
336 config FRAMEBUFFER_VESA_MODE_105
337         bool "1024x768 256-color"
339 config FRAMEBUFFER_VESA_MODE_106
340         bool "1280x1024 16-color"
342 config FRAMEBUFFER_VESA_MODE_107
343         bool "1280x1024 256-color"
345 config FRAMEBUFFER_VESA_MODE_108
346         bool "80x60 text"
348 config FRAMEBUFFER_VESA_MODE_109
349         bool "132x25 text"
351 config FRAMEBUFFER_VESA_MODE_10A
352         bool "132x43 text"
354 config FRAMEBUFFER_VESA_MODE_10B
355         bool "132x50 text"
357 config FRAMEBUFFER_VESA_MODE_10C
358         bool "132x60 text"
360 config FRAMEBUFFER_VESA_MODE_10D
361         bool "320x200 32k-color (1:5:5:5)"
363 config FRAMEBUFFER_VESA_MODE_10E
364         bool "320x200 64k-color (5:6:5)"
366 config FRAMEBUFFER_VESA_MODE_10F
367         bool "320x200 16.8M-color (8:8:8)"
369 config FRAMEBUFFER_VESA_MODE_110
370         bool "640x480 32k-color (1:5:5:5)"
372 config FRAMEBUFFER_VESA_MODE_111
373         bool "640x480 64k-color (5:6:5)"
375 config FRAMEBUFFER_VESA_MODE_112
376         bool "640x480 16.8M-color (8:8:8)"
378 config FRAMEBUFFER_VESA_MODE_113
379         bool "800x600 32k-color (1:5:5:5)"
381 config FRAMEBUFFER_VESA_MODE_114
382         bool "800x600 64k-color (5:6:5)"
384 config FRAMEBUFFER_VESA_MODE_115
385         bool "800x600 16.8M-color (8:8:8)"
387 config FRAMEBUFFER_VESA_MODE_116
388         bool "1024x768 32k-color (1:5:5:5)"
390 config FRAMEBUFFER_VESA_MODE_117
391         bool "1024x768 64k-color (5:6:5)"
393 config FRAMEBUFFER_VESA_MODE_118
394         bool "1024x768 16.8M-color (8:8:8)"
396 config FRAMEBUFFER_VESA_MODE_119
397         bool "1280x1024 32k-color (1:5:5:5)"
399 config FRAMEBUFFER_VESA_MODE_11A
400         bool "1280x1024 64k-color (5:6:5)"
402 config FRAMEBUFFER_VESA_MODE_11B
403         bool "1280x1024 16.8M-color (8:8:8)"
405 config FRAMEBUFFER_VESA_MODE_USER
406         bool "Manually select VESA mode"
408 endchoice
410 # Map the config names to an integer (KB).
411 config FRAMEBUFFER_VESA_MODE
412         prompt "VESA mode" if FRAMEBUFFER_VESA_MODE_USER
413         hex
414         default 0x100 if FRAMEBUFFER_VESA_MODE_100
415         default 0x101 if FRAMEBUFFER_VESA_MODE_101
416         default 0x102 if FRAMEBUFFER_VESA_MODE_102
417         default 0x103 if FRAMEBUFFER_VESA_MODE_103
418         default 0x104 if FRAMEBUFFER_VESA_MODE_104
419         default 0x105 if FRAMEBUFFER_VESA_MODE_105
420         default 0x106 if FRAMEBUFFER_VESA_MODE_106
421         default 0x107 if FRAMEBUFFER_VESA_MODE_107
422         default 0x108 if FRAMEBUFFER_VESA_MODE_108
423         default 0x109 if FRAMEBUFFER_VESA_MODE_109
424         default 0x10A if FRAMEBUFFER_VESA_MODE_10A
425         default 0x10B if FRAMEBUFFER_VESA_MODE_10B
426         default 0x10C if FRAMEBUFFER_VESA_MODE_10C
427         default 0x10D if FRAMEBUFFER_VESA_MODE_10D
428         default 0x10E if FRAMEBUFFER_VESA_MODE_10E
429         default 0x10F if FRAMEBUFFER_VESA_MODE_10F
430         default 0x110 if FRAMEBUFFER_VESA_MODE_110
431         default 0x111 if FRAMEBUFFER_VESA_MODE_111
432         default 0x112 if FRAMEBUFFER_VESA_MODE_112
433         default 0x113 if FRAMEBUFFER_VESA_MODE_113
434         default 0x114 if FRAMEBUFFER_VESA_MODE_114
435         default 0x115 if FRAMEBUFFER_VESA_MODE_115
436         default 0x116 if FRAMEBUFFER_VESA_MODE_116
437         default 0x117 if FRAMEBUFFER_VESA_MODE_117
438         default 0x118 if FRAMEBUFFER_VESA_MODE_118
439         default 0x119 if FRAMEBUFFER_VESA_MODE_119
440         default 0x11A if FRAMEBUFFER_VESA_MODE_11A
441         default 0x11B if FRAMEBUFFER_VESA_MODE_11B
442         default 0x118 if FRAMEBUFFER_VESA_MODE_USER
443 endif # FRAMEBUFFER_SET_VESA_MODE
445 config WANT_LINEAR_FRAMEBUFFER
446         bool
447         default y if CHROMEOS
448         default y if PAYLOAD_EDK2
449         default y if COREDOOM_SECONDARY_PAYLOAD
451 choice
452         prompt "Framebuffer mode"
453         default VBE_LINEAR_FRAMEBUFFER if HAVE_VBE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER
454         default GENERIC_LINEAR_FRAMEBUFFER if HAVE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER
455         default VGA_TEXT_FRAMEBUFFER
457 config VGA_TEXT_FRAMEBUFFER
458         bool "Legacy VGA text mode"
459         depends on HAVE_VGA_TEXT_FRAMEBUFFER
460         help
461           If this option is enabled, coreboot will initialize graphics in
462           legacy VGA text mode or, if a VGA BIOS is used and a VESA mode set,
463           switch to text mode before handing control to a payload.
465 config VBE_LINEAR_FRAMEBUFFER
466         bool "VESA framebuffer"
467         depends on HAVE_VBE_LINEAR_FRAMEBUFFER
468         help
469           This option keeps the framebuffer mode set after coreboot finishes
470           execution. If this option is enabled, coreboot will pass a
471           framebuffer entry in its coreboot table and the payload will need a
472           compatible driver.
474 config GENERIC_LINEAR_FRAMEBUFFER
475         bool "Linear \"high-resolution\" framebuffer"
476         depends on HAVE_LINEAR_FRAMEBUFFER
477         help
478           This option enables a high-resolution, linear framebuffer. If this
479           option is enabled, coreboot will pass a framebuffer entry in its
480           coreboot table and the payload will need a compatible driver.
482 endchoice
484 # Workaround to have LINEAR_FRAMEBUFFER set in both cases
485 # VBE_LINEAR_FRAMEBUFFER and GENERIC_LINEAR_FRAMEBUFFER.
486 # `kconfig_lint` doesn't let us use the same name with
487 # different texts in the choice above.
488 config LINEAR_FRAMEBUFFER
489         def_bool y
490         depends on VBE_LINEAR_FRAMEBUFFER || GENERIC_LINEAR_FRAMEBUFFER
492 config BOOTSPLASH
493         prompt "Show graphical bootsplash"
494         bool
495         depends on LINEAR_FRAMEBUFFER
496         help
497           This option shows a graphical bootsplash screen. The graphics are
498           loaded from the CBFS file bootsplash.jpg.
500           You can either specify the location and file name of the
501           image in the 'General' section or add it manually to CBFS, using,
502           for example, cbfstool.
504 config LINEAR_FRAMEBUFFER_MAX_WIDTH
505         int "Maximum width in pixels"
506         depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
507         default 2560 if SYSTEM_TYPE_LAPTOP
508         default 3840
509         help
510           Set the maximum width of the framebuffer. This may help with
511           default fonts too tiny for high-resolution displays.
513 config LINEAR_FRAMEBUFFER_MAX_HEIGHT
514         int "Maximum height in pixels"
515         depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
516         default 1600 if SYSTEM_TYPE_LAPTOP
517         default 2160
518         help
519           Set the maximum height of the framebuffer. This may help with
520           default fonts too tiny for high-resolution displays.
522 choice DEFAULT_SCREEN_ROTATION
523         prompt "Default screen orientation"
524         depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT
525         depends on GFX_GMA_GENERATION = "Broxton" || GFX_GMA_GENERATION = "Skylake"
526         default DEFAULT_SCREEN_ROTATION_NONE
527         help
528           This allows to configure how the physical screen is mounted in
529           90 degree steps (counter-clockwise). The framebuffer contents
530           will then be displayed rotated by the same amount in the other
531           direction; i.e. if you turn the screen to the left, the picture
532           has to be rotated to the right to accommodate.
534 config DEFAULT_SCREEN_ROTATION_NONE
535         bool "Non-rotated"
537 config DEFAULT_SCREEN_ROTATION_90
538         bool "Rotated 90 degrees (rotate framebuffer to the right)"
540 config DEFAULT_SCREEN_ROTATION_180
541         bool "Rotated 180 degrees"
543 config DEFAULT_SCREEN_ROTATION_270
544         bool "Rotated 270 degrees (rotate framebuffer to the left)"
546 endchoice
548 config DEFAULT_SCREEN_ROTATION_INT
549         int
550         default  90 if DEFAULT_SCREEN_ROTATION_90
551         default 180 if DEFAULT_SCREEN_ROTATION_180
552         default 270 if DEFAULT_SCREEN_ROTATION_270
553         default 0
555 endmenu # "Display"
557 config PCI
558         bool
559         default n
561 config PCI_IOBASE
562         hex
563         help
564           The memory address of a memory-mapped translator that lets the
565           CPU communicate with peripheral devices over PCI I/O space.
567 if PCI
569 config DOMAIN_RESOURCE_32BIT_LIMIT
570         hex
571         default 0xfe000000
572         help
573           When the default pci_domain_read_resources() is used,
574           keep 32-bit memory resources below this limit. This is
575           used as a workaround for missing/wrong reservations of
576           chipset resources that usually reside above this limit.
578 config NO_ECAM_MMCONF_SUPPORT
579         bool
580         default n
581         help
582           Disable the use of the Enhanced Configuration
583           Access mechanism (ECAM) method for accessing PCI config
584           address space.
586 config ECAM_MMCONF_SUPPORT
587         bool
588         default !NO_ECAM_MMCONF_SUPPORT
589         help
590           Enable the use of the Enhanced Configuration
591           Access mechanism (ECAM) method for accessing PCI config
592           address space.
594 config PCIX_PLUGIN_SUPPORT
595         bool
596         default y
598 config CARDBUS_PLUGIN_SUPPORT
599         bool
600         default y
602 config AZALIA_HDA_CODEC_SUPPORT
603         bool
604         default n
605         help
606           Select this option to include the code to initialize Azalia HD audio
607           codec chips. This will also add the hda_verb.c file from the
608           mainboard directory to the build which contain the board-specific HD
609           audio codec configuration.
611 config PCIEXP_PLUGIN_SUPPORT
612         bool
613         default y
615 config ECAM_MMCONF_BASE_ADDRESS
616         hex
617         depends on ECAM_MMCONF_SUPPORT
619 config ECAM_MMCONF_BUS_NUMBER
620         int
621         depends on ECAM_MMCONF_SUPPORT
622         help
623           Total number of PCI buses in the system across all segment groups.
624           The number needs to be a power of 2. For values <= 256,
625           PCI_BUSES_PER_SEGMENT_GROUP is CONFIG_ECAM_MMCONF_BUS_NUMBER and
626           PCI_SEGMENT_GROUP_COUNT is 1. For values > 256,
627           PCI_BUSES_PER_SEGMENT_GROUP is 256 and PCI_SEGMENT_GROUP_COUNT is
628           CONFIG_ECAM_MMCONF_BUS_NUMBER / 256.
630 config ECAM_MMCONF_LENGTH
631         hex
632         depends on ECAM_MMCONF_SUPPORT
633         default 0x02000000 if ECAM_MMCONF_BUS_NUMBER = 32
634         default 0x04000000 if ECAM_MMCONF_BUS_NUMBER = 64
635         default 0x08000000 if ECAM_MMCONF_BUS_NUMBER = 128
636         default 0x10000000 if ECAM_MMCONF_BUS_NUMBER = 256
637         default 0x20000000 if ECAM_MMCONF_BUS_NUMBER = 512
638         default 0x80000000 if ECAM_MMCONF_BUS_NUMBER = 1024
639         default 0x0
641 config PCI_ALLOW_BUS_MASTER
642         bool "Allow coreboot to set optional PCI bus master bits"
643         default y
644         help
645           For security reasons, bus mastering should be enabled as late as
646           possible. In coreboot, it's usually not necessary and payloads
647           should only enable it for devices they use. Since not all payloads
648           enable bus mastering properly yet, this option gives some sort of
649           "backwards compatibility" and is enabled by default to keep the
650           traditional behaviour for now. This is currently necessary, for
651           instance, for libpayload based payloads as the drivers don't enable
652           bus mastering for PCI bridges.
654 if PCI_ALLOW_BUS_MASTER
656 config PCI_SET_BUS_MASTER_PCI_BRIDGES
657         bool "PCI bridges"
658         default y
659         help
660           Let coreboot configure bus mastering for PCI bridges. Enabling bus
661           mastering for a PCI bridge also allows it to forward requests from
662           downstream devices. Currently, payloads ignore this and only enable
663           bus mastering for the downstream device. Hence, this option is needed
664           for compatibility until payloads are fixed.
666 config PCI_ALLOW_BUS_MASTER_ANY_DEVICE
667         bool "Any devices"
668         default y
669         select PCI_SET_BUS_MASTER_PCI_BRIDGES
670         help
671           Allow coreboot to enable PCI bus mastering for any device. The actual
672           selection of devices depends on the various PCI drivers in coreboot.
674 endif # PCI_ALLOW_BUS_MASTER
676 endif # PCI
678 if PCIEXP_PLUGIN_SUPPORT
680 config PCIEXP_COMMON_CLOCK
681         prompt "Enable PCIe Common Clock"
682         bool
683         default n
684         help
685           Detect and enable Common Clock on PCIe links.
687 config PCIEXP_ASPM
688         prompt "Enable PCIe ASPM"
689         bool
690         default n
691         help
692           Detect and enable ASPM (Active State Power Management) on PCIe links.
694 config PCIEXP_CLK_PM
695         prompt "Enable PCIe Clock Power Management"
696         bool
697         default n
698         help
699           Detect and enable Clock Power Management on PCIe.
701 config PCIEXP_L1_SUB_STATE
702         prompt "Enable PCIe ASPM L1 SubState"
703         bool
704         depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT)
705         default n
706         help
707           Detect and enable ASPM on PCIe links.
709 config PCIEXP_SUPPORT_RESIZABLE_BARS
710         prompt "Support PCIe Resizable BARs"
711         bool
712         depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT)
713         default n
714         help
715           When enabled, this will check PCIe devices for Resizable BAR support,
716           and if found, will use this to discover the preferred BAR sizes of
717           the device in preference over the traditional moving bits method. The
718           amount of address space given out to devices in this manner (since
719           it can range up to 8 EB) can be limited with the
720           PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS Kconfig setting below.
722 if PCIEXP_SUPPORT_RESIZABLE_BARS
724 config PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS
725         int "Bits of address space to give to Resizable BARs"
726         range 20 63     # 1 MiB - 8 EiB
727         default 29      # 512 MiB
728         help
729           This is the maximum number of bits of address space to allocate for
730           PCIe devices with resizable BARs. For instance, if a device requests
731           30 bits of address space (1 GiB), but this field is set to 29, then
732           the device will only be allocated 29 bits worth of address space (512
733           MiB). Valid values range from 20 (1 MiB) to 63 (8 EiB); these come
734           from the Resizable BAR portion of the PCIe spec (7.8.6).
736 endif # PCIEXP_SUPPORT_RESIZABLE_BARS
738 config PCIEXP_LANE_ERR_STAT_CLEAR
739         prompt "Enable Clear PCIe Lane Error Status"
740         bool
741         default n
742         help
743           Clear the PCIe Lane Error Status at the end of link training.
745 config PCIEXP_HOTPLUG
746         prompt "Enable PCIe Hotplug Support"
747         bool
748         default n
749         help
750           Allocate resources for PCIe hotplug bridges
752 if PCIEXP_HOTPLUG
754 config PCIEXP_HOTPLUG_BUSES
755         int "PCI Express Hotplug Buses"
756         default 8
757         help
758           This is the number of buses allocated for hotplug PCI express
759           bridges, for use by hotplugged child devices. The default is 8
760           buses.
762 config PCIEXP_HOTPLUG_MEM
763         hex "PCI Express Hotplug Memory"
764         default 0x800000
765         help
766           This is the amount of memory space, in bytes, to allocate to
767           hotplug PCI express bridges, for use by hotplugged child devices.
768           This size should be page-aligned. The default is 8 MiB.
770 config PCIEXP_HOTPLUG_PREFETCH_MEM
771         hex "PCI Express Hotplug Prefetch Memory"
772         default 0x10000000
773         help
774           This is the amount of pre-fetchable memory space, in bytes, to
775           allocate to hot-plug PCI express bridges, for use by hotplugged
776           child devices. This size should be page-aligned. The default is
777           256 MiB.
779 config PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G
780         bool
781         default y if !PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
782         default n
783         help
784           This enables prefetch memory allocation above 4G boundary for the
785           hotplug resources.
787 config PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G
788         bool "PCI Express Hotplug Prefetch Memory Allocation below 4G boundary"
789         default n
790         help
791           This enables prefetch memory allocation below 4G boundary for the
792           hotplug resources.
794 config PCIEXP_HOTPLUG_IO
795         hex "PCI Express Hotplug I/O Space"
796         default 0x800
797         help
798           This is the amount of I/O space to allocate to hot-plug PCI
799           express bridges, for use by hotplugged child devices. The default
800           is 2 KiB.
802 endif # PCIEXP_HOTPLUG
804 endif # PCIEXP_PLUGIN_SUPPORT
806 config EARLY_PCI_BRIDGE
807         bool "Early PCI bridge"
808         depends on PCI
809         default n
810         help
811           While coreboot is executing code from ROM, the coreboot resource
812           allocator has not been running yet. Hence PCI devices living behind
813           a bridge are not yet visible to the system.
815           This option enables static configuration for a single pre-defined
816           PCI bridge function on bus 0.
818 if EARLY_PCI_BRIDGE
820 config EARLY_PCI_BRIDGE_DEVICE
821         hex "bridge device"
822         default 0x0
824 config EARLY_PCI_BRIDGE_FUNCTION
825         hex "bridge function"
826         default 0x0
828 config EARLY_PCI_MMIO_BASE
829         hex "MMIO window base"
830         default 0x0
832 endif # EARLY_PCI_BRIDGE
834 config SUBSYSTEM_VENDOR_ID
835         hex "Override PCI Subsystem Vendor ID"
836         depends on PCI
837         default 0x0000
838         help
839           This config option will override the devicetree settings for
840           PCI Subsystem Vendor ID.
842           Note: This option is not meant for a board's Kconfig; use the
843           devicetree setting `subsystemid` instead.
845 config SUBSYSTEM_DEVICE_ID
846         hex "Override PCI Subsystem Device ID"
847         depends on PCI
848         default 0x0000
849         help
850           This config option will override the devicetree settings for
851           PCI Subsystem Device ID.
853           Note: This option is not meant for a board's Kconfig; use the
854           devicetree setting `subsystemid` instead.
856 config VGA_BIOS
857         bool "Add a VGA BIOS image"
858         depends on ARCH_X86
859         select VGA_ROM_RUN_DEFAULT
860         help
861           Select this option if you have a VGA BIOS image that you would
862           like to add to your ROM.
864           You will be able to specify the location and file name of the
865           image later.
867 config VGA_BIOS_FILE
868         string "VGA BIOS path and filename"
869         depends on VGA_BIOS
870         default "vgabios.bin"
871         help
872           The path and filename of the file to use as VGA BIOS.
874 config VGA_BIOS_ID
875         string "VGA device PCI IDs"
876         depends on VGA_BIOS
877         default "1106,3230"
878         help
879           The comma-separated PCI vendor and device ID that would associate
880           your vBIOS to your video card.
882           Example: 1106,3230
884           In the above example 1106 is the PCI vendor ID (in hex, but without
885           the "0x" prefix) and 3230 specifies the PCI device ID of the
886           video card (also in hex, without "0x" prefix).
888           This ID needs to match the PCI VID and DID in the VGA BIOS file's
889           header and also needs to match the value returned by map_oprom_vendev
890           if the remapping feature is used.
892           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
894 config VGA_BIOS_SECOND
895         bool "Add a 2nd video BIOS image"
896         depends on ARCH_X86 && VGA_BIOS
897         help
898           Select this option if you have a 2nd video BIOS image that you would
899           like to add to your ROM.
901 config VGA_BIOS_SECOND_FILE
902         string "2nd video BIOS path and filename"
903         depends on VGA_BIOS_SECOND
904         default "vbios2.bin"
905         help
906           The path and filename of the file to use as video BIOS.
908 config VGA_BIOS_SECOND_ID
909         string "Graphics device PCI IDs"
910         depends on VGA_BIOS_SECOND
911         help
912           The comma-separated PCI vendor and device ID that would associate
913           your vBIOS to your video card.
915           Example: 1106,3230
917           In the above example 1106 is the PCI vendor ID (in hex, but without
918           the "0x" prefix) and 3230 specifies the PCI device ID of the
919           video card (also in hex, without "0x" prefix).
921           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
923 config VGA_BIOS_DGPU
924         bool "Add a discrete VGA BIOS image"
925         depends on VGA_BIOS
926         help
927           Select this option if you have a VGA BIOS image for discrete GPU
928           that you would like to add to your ROM.
930           You will be able to specify the location and file name of the
931           image later.
933 config VGA_BIOS_DGPU_FILE
934         string "Discrete VGA BIOS path and filename"
935         depends on VGA_BIOS_DGPU
936         default "vgabios_dgpu.bin"
937         help
938           The path and filename of the file to use as VGA BIOS for discrete GPU.
940 config VGA_BIOS_DGPU_ID
941         string "Discrete VGA device PCI IDs"
942         depends on VGA_BIOS_DGPU
943         default "1002,6663"
944         help
945           The comma-separated PCI vendor and device ID that would associate
946           your VGA BIOS to your discrete video card.
948           Examples:
949               1002,6663 for HD 8570M
950               1002,6665 for R5 M230
952           In the above examples 1002 is the PCI vendor ID (in hex, but without
953           the "0x" prefix) and 6663 / 6665 specifies the PCI device ID of the
954           discrete video card (also in hex, without "0x" prefix).
956           Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices.
958 config INTEL_GMA_HAVE_VBT
959         bool
960         help
961           Select this in the mainboard Kconfig to indicate the board has
962           a data.vbt file.
964 config INTEL_GMA_ADD_VBT
965         depends on SOC_INTEL_COMMON || CPU_INTEL_COMMON
966         bool "Add a Video BIOS Table (VBT) binary to CBFS"
967         default y if INTEL_GMA_HAVE_VBT
968         help
969           Add a VBT data file to CBFS. The VBT describes the integrated
970           GPU and connections, and is needed by the GOP driver integrated into
971           FSP and the OS driver in order to initialize the display.
973 config INTEL_GMA_VBT_FILE
974         string "VBT binary path and filename"
975         depends on INTEL_GMA_ADD_VBT
976         default "src/mainboard/\$(MAINBOARDDIR)/variants/\$(VARIANT_DIR)/data.vbt" \
977                 if INTEL_GMA_HAVE_VBT && VARIANT_DIR != ""
978         default "src/mainboard/\$(MAINBOARDDIR)/data.vbt" if INTEL_GMA_HAVE_VBT
979         default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/vbt.bin"
980         help
981           The path and filename of the VBT binary.
983 config SOFTWARE_I2C
984         bool "Enable I2C controller emulation in software"
985         default n
986         help
987           This config option will enable code to override the i2c_transfer
988           routine with a (simple) software emulation of the protocol. This may
989           be useful for debugging or on platforms where a driver for the real
990           I2C controller is not (yet) available. The platform code needs to
991           provide bindings to manually toggle I2C lines.
993 config I2C_TRANSFER_TIMEOUT_US
994         int "I2C transfer timeout in microseconds"
995         default 500000
996         help
997           Timeout for a read/write transfers on the I2C bus, that is, the
998           maximum time a device could stretch clock bits before the transfer
999           is aborted and an error returned.
1001 config RESOURCE_ALLOCATION_TOP_DOWN
1002         bool "Allocate resources from top down"
1003         default n if PAYLOAD_EDK2
1004         default y
1005         help
1006           Top-down allocation is required to place resources above 4G by
1007           default (i.e. even when there is still space below). On some
1008           platforms, it might make a difference because of conflicts with
1009           undeclared resources. EDK2 is currently reported to also have
1010           problems on some platforms, at least with Intel's IGD.
1012 config ALWAYS_ALLOW_ABOVE_4G_ALLOCATION
1013         bool
1014         default n if ARCH_X86
1015         default y
1016         help
1017           Don't limit mem resources to 4G, but to their actual limit.
1019 config XHCI_UTILS
1020         def_bool n
1021         help
1022           Provides xHCI utility functions.
1024 config D3COLD_SUPPORT
1025         bool
1026         default y
1027         help
1028           Enable this option if all devices on your system support the
1029           D3Cold power management state. The D3Cold state is a low-power
1030           state where the device has been powered down and is no longer
1031           able to maintain its context. This state can help reduce
1032           overall system power consumption, which can be beneficial for
1033           energy savings and thermal management.
1035           Please note that enabling D3Cold support may break system
1036           suspend-to-RAM (S3) functionality.
1038 source "src/device/dram/Kconfig"
1040 endmenu