| ## SPDX-License-Identifier: GPL-2.0-only | |
| menu "Devices" | |
| config HAVE_VGA_TEXT_FRAMEBUFFER | |
| bool | |
| depends on !(NO_GFX_INIT && NO_EARLY_GFX_INIT) | |
| help | |
| Selected by graphics drivers that support legacy VGA text mode. | |
| config HAVE_VBE_LINEAR_FRAMEBUFFER | |
| bool | |
| depends on !NO_GFX_INIT | |
| help | |
| Selected by graphics drivers that can set up a VBE linear-framebuffer | |
| mode. | |
| config HAVE_LINEAR_FRAMEBUFFER | |
| bool | |
| depends on !NO_GFX_INIT | |
| help | |
| Selected by graphics drivers that can set up a generic linear | |
| framebuffer. | |
| config HAVE_FSP_GOP | |
| bool | |
| help | |
| Selected by drivers that support to run a blob that implements | |
| the Graphics Output Protocol (GOP). | |
| config MAINBOARD_NO_FSP_GOP | |
| bool | |
| help | |
| Selected by mainboards that do not have any graphics ports connected to the SoC. | |
| config MAINBOARD_HAS_NATIVE_VGA_INIT | |
| def_bool n | |
| help | |
| Selected by mainboards / drivers that provide native graphics | |
| init within coreboot. | |
| config MAINBOARD_FORCE_NATIVE_VGA_INIT | |
| def_bool n | |
| depends on MAINBOARD_HAS_NATIVE_VGA_INIT || MAINBOARD_HAS_LIBGFXINIT | |
| help | |
| Selected by mainboards / chipsets whose graphics driver can't or | |
| shouldn't be disabled. | |
| config VGA_ROM_RUN_DEFAULT | |
| def_bool n | |
| help | |
| Selected by mainboards whose graphics initialization depends on VGA OpROM. | |
| coreboot needs to load/execute legacy VGA OpROM in order to initialize GFX. | |
| config MAINBOARD_HAS_LIBGFXINIT | |
| def_bool n | |
| help | |
| Selected by mainboards that implement support for `libgfxinit`. | |
| Usually this requires a list of ports to be probed for displays. | |
| config MAINBOARD_HAS_EARLY_LIBGFXINIT | |
| def_bool n | |
| help | |
| Selected by mainboards that implement early (cache-as-ram | |
| stage) support of `libgfxinit`. Usually this requires a list | |
| of ports to be probed for displays. | |
| choice | |
| prompt "Graphics initialization" | |
| default NO_GFX_INIT if VGA_ROM_RUN_DEFAULT && PAYLOAD_SEABIOS | |
| default VGA_ROM_RUN if VGA_ROM_RUN_DEFAULT | |
| default MAINBOARD_DO_NATIVE_VGA_INIT | |
| default MAINBOARD_USE_LIBGFXINIT | |
| default RUN_FSP_GOP if INTEL_GMA_HAVE_VBT | |
| config MAINBOARD_DO_NATIVE_VGA_INIT | |
| bool "Use native graphics init" | |
| depends on MAINBOARD_HAS_NATIVE_VGA_INIT | |
| help | |
| Some mainboards, such as the Google Link, allow initializing the | |
| display without the need of a binary only VGA OPROM. Enabling this | |
| option may be faster, but also lacks flexibility in setting modes. | |
| config MAINBOARD_USE_LIBGFXINIT | |
| bool "Use libgfxinit" | |
| depends on MAINBOARD_HAS_LIBGFXINIT | |
| select HAVE_VGA_TEXT_FRAMEBUFFER | |
| select HAVE_LINEAR_FRAMEBUFFER | |
| select VGA if VGA_TEXT_FRAMEBUFFER | |
| help | |
| Use the SPARK library `libgfxinit` for the native graphics | |
| initialization. This requires an Ada toolchain. | |
| # TODO: Explain differences (if any) for onboard cards. | |
| config VGA_ROM_RUN | |
| bool "Run VGA Option ROMs" | |
| depends on PCI && (ARCH_X86 || ARCH_PPC64) && !MAINBOARD_FORCE_NATIVE_VGA_INIT | |
| select HAVE_VGA_TEXT_FRAMEBUFFER | |
| help | |
| Execute VGA Option ROMs in coreboot if found. This can be used | |
| to enable PCI/AGP/PCI-E video cards when not using a SeaBIOS | |
| payload. | |
| When using a SeaBIOS payload it runs all option ROMs with much | |
| more complete BIOS interrupt services available than coreboot, | |
| which some option ROMs require in order to function correctly. | |
| config RUN_FSP_GOP | |
| bool "Run a GOP driver" | |
| depends on HAVE_FSP_GOP && !MAINBOARD_NO_FSP_GOP | |
| select HAVE_LINEAR_FRAMEBUFFER | |
| help | |
| Some platforms (e.g. Intel Braswell and Skylake/Kaby Lake) support | |
| to run a GOP blob. This option enables graphics initialization with | |
| such a blob. | |
| config NO_GFX_INIT | |
| bool "None" | |
| depends on !MAINBOARD_FORCE_NATIVE_VGA_INIT | |
| help | |
| Select this to not perform any graphics initialization in | |
| coreboot. This is useful if the payload (e.g. SeaBIOS) can | |
| initialize graphics or if pre-boot graphics are not required. | |
| endchoice | |
| choice | |
| prompt "Early (romstage) graphics initialization" | |
| default MAINBOARD_USE_EARLY_LIBGFXINIT if MAINBOARD_HAS_EARLY_LIBGFXINIT | |
| default NO_EARLY_GFX_INIT | |
| config NO_EARLY_GFX_INIT | |
| bool "None" | |
| help | |
| Select this to not perform any graphics initialization at | |
| romstage. | |
| config MAINBOARD_USE_EARLY_LIBGFXINIT | |
| bool "Use libgfxinit" | |
| depends on MAINBOARD_HAS_EARLY_LIBGFXINIT | |
| select ROMSTAGE_VGA | |
| help | |
| Use the SPARK library `libgfxinit` for the romstage native | |
| graphics initialization. This requires an Ada | |
| toolchain. Graphics at romstage is limited to VGA text mode. | |
| endchoice | |
| config PRE_GRAPHICS_DELAY_MS | |
| int "Graphics initialization delay in ms" | |
| default 0 | |
| depends on VGA_ROM_RUN | |
| help | |
| On some systems, coreboot boots so fast that connected monitors | |
| (mostly TVs) won't be able to wake up fast enough to talk to the | |
| VBIOS. On those systems we need to wait for a bit before executing | |
| the VBIOS. | |
| config ONBOARD_VGA_IS_PRIMARY | |
| bool "Use onboard VGA as primary video device" | |
| default n | |
| depends on PCI | |
| help | |
| This option lets you select which VGA device will be used | |
| to decode legacy VGA cycles. Not all chipsets implement this | |
| however. If not selected, the last adapter found will be used, | |
| else the onboard adapter is used. | |
| config S3_VGA_ROM_RUN | |
| bool "Re-run VGA Option ROMs on S3 resume" | |
| default y | |
| depends on VGA_ROM_RUN && HAVE_ACPI_RESUME | |
| help | |
| Execute VGA Option ROMs in coreboot when resuming from S3 suspend. | |
| When using a SeaBIOS payload it runs all option ROMs with much | |
| more complete BIOS interrupt services available than coreboot, | |
| which some option ROMs require in order to function correctly. | |
| If unsure, say N when using SeaBIOS as payload, Y otherwise. | |
| config ALWAYS_LOAD_OPROM | |
| def_bool n | |
| depends on VGA_ROM_RUN | |
| help | |
| Always load option ROMs if any are found. The decision to run | |
| the ROM is still determined at runtime, but the distinction | |
| between loading and not running comes into play for CHROMEOS. | |
| An example where this is required is that VBT (Video BIOS Tables) | |
| are needed for the kernel's display driver to know how a piece of | |
| hardware is configured to be used. | |
| config ALWAYS_RUN_OPROM | |
| def_bool n | |
| depends on VGA_ROM_RUN && ALWAYS_LOAD_OPROM | |
| help | |
| Always unconditionally run the option regardless of other | |
| policies. | |
| config ON_DEVICE_ROM_LOAD | |
| bool "Load Option ROMs on PCI devices" | |
| default n if PAYLOAD_SEABIOS | |
| default y if !PAYLOAD_SEABIOS | |
| depends on VGA_ROM_RUN | |
| help | |
| Load Option ROMs stored on PCI/PCIe/AGP VGA devices in coreboot. | |
| If disabled, only Option ROMs stored in CBFS will be executed by | |
| coreboot. If you are concerned about security, you might want to | |
| disable this option, but it might leave your system in a state of | |
| degraded functionality. | |
| When using a SeaBIOS payload it runs all option ROMs with much | |
| more complete BIOS interrupt services available than coreboot, | |
| which some option ROMs require in order to function correctly. | |
| If unsure, say N when using SeaBIOS as payload, Y otherwise. | |
| choice | |
| prompt "Option ROM execution type" | |
| default PCI_OPTION_ROM_RUN_YABEL if !ARCH_X86 | |
| default PCI_OPTION_ROM_RUN_REALMODE if ARCH_X86 | |
| depends on VGA_ROM_RUN | |
| config PCI_OPTION_ROM_RUN_REALMODE | |
| prompt "Native mode" | |
| bool | |
| depends on ARCH_X86 && !ARCH_RAMSTAGE_X86_64 | |
| help | |
| If you select this option, PCI Option ROMs will be executed | |
| natively on the CPU in real mode. No CPU emulation is involved, | |
| so this is the fastest, but also the least secure option. | |
| (only works on x86/x64 systems) | |
| config PCI_OPTION_ROM_RUN_YABEL | |
| prompt "Secure mode" | |
| bool | |
| help | |
| If you select this option, the x86emu CPU emulator will be used to | |
| execute PCI Option ROMs. | |
| This option prevents Option ROMs from doing dirty tricks with the | |
| system (such as installing SMM modules or hypervisors), but it is | |
| also significantly slower than the native Option ROM initialization | |
| method. | |
| This is the default choice for non-x86 systems. | |
| endchoice | |
| config YABEL_PCI_ACCESS_OTHER_DEVICES | |
| prompt "Allow Option ROMs to access other devices" | |
| bool | |
| depends on PCI_OPTION_ROM_RUN_YABEL | |
| help | |
| Per default, YABEL only allows Option ROMs to access the PCI device | |
| that they are associated with. However, this causes trouble for some | |
| onboard graphics chips whose Option ROM needs to reconfigure the | |
| north bridge. | |
| config YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG | |
| prompt "Fake success on writing other device's config space" | |
| bool | |
| depends on YABEL_PCI_ACCESS_OTHER_DEVICES | |
| help | |
| By default, YABEL aborts when the Option ROM tries to write to other | |
| devices' config spaces. With this option enabled, the write doesn't | |
| follow through, but the Option ROM is allowed to go on. | |
| This can create issues such as hanging Option ROMs (if it depends on | |
| that other register changing to the written value), so test for | |
| impact before using this option. | |
| config YABEL_VIRTMEM_LOCATION | |
| prompt "Location of YABEL's virtual memory" | |
| hex | |
| depends on PCI_OPTION_ROM_RUN_YABEL | |
| default 0x1000000 | |
| help | |
| YABEL requires 1MB memory for its CPU emulation. This memory is | |
| normally located at 16MB. | |
| config YABEL_DIRECTHW | |
| prompt "Direct hardware access" | |
| bool | |
| depends on PCI_OPTION_ROM_RUN_YABEL && ARCH_X86 | |
| help | |
| YABEL consists of two parts: It uses x86emu for the CPU emulation and | |
| additionally provides a PC system emulation that filters bad device | |
| and memory access (such as PCI config space access to other devices | |
| than the initialized one). | |
| When choosing this option, x86emu will pass through all hardware | |
| accesses to memory and I/O devices to the underlying memory and I/O | |
| addresses. While this option prevents Option ROMs from doing dirty | |
| tricks with the CPU (such as installing SMM modules or hypervisors), | |
| they can still access all devices in the system. | |
| Enable this option for a good compromise between security and speed. | |
| menu "Display" | |
| depends on HAVE_VGA_TEXT_FRAMEBUFFER || HAVE_LINEAR_FRAMEBUFFER | |
| config FRAMEBUFFER_SET_VESA_MODE | |
| prompt "Set framebuffer graphics resolution" | |
| bool | |
| default y if CHROMEOS | |
| depends on PCI_OPTION_ROM_RUN_YABEL || PCI_OPTION_ROM_RUN_REALMODE | |
| select HAVE_VBE_LINEAR_FRAMEBUFFER | |
| help | |
| Set VESA/native framebuffer mode (needed for bootsplash and graphical framebuffer console) | |
| if FRAMEBUFFER_SET_VESA_MODE | |
| choice | |
| prompt "framebuffer graphics resolution" | |
| default FRAMEBUFFER_VESA_MODE_118 | |
| help | |
| This option sets the resolution used for the coreboot framebuffer (and | |
| bootsplash screen). | |
| config FRAMEBUFFER_VESA_MODE_100 | |
| bool "640x400 256-color" | |
| config FRAMEBUFFER_VESA_MODE_101 | |
| bool "640x480 256-color" | |
| config FRAMEBUFFER_VESA_MODE_102 | |
| bool "800x600 16-color" | |
| config FRAMEBUFFER_VESA_MODE_103 | |
| bool "800x600 256-color" | |
| config FRAMEBUFFER_VESA_MODE_104 | |
| bool "1024x768 16-color" | |
| config FRAMEBUFFER_VESA_MODE_105 | |
| bool "1024x768 256-color" | |
| config FRAMEBUFFER_VESA_MODE_106 | |
| bool "1280x1024 16-color" | |
| config FRAMEBUFFER_VESA_MODE_107 | |
| bool "1280x1024 256-color" | |
| config FRAMEBUFFER_VESA_MODE_108 | |
| bool "80x60 text" | |
| config FRAMEBUFFER_VESA_MODE_109 | |
| bool "132x25 text" | |
| config FRAMEBUFFER_VESA_MODE_10A | |
| bool "132x43 text" | |
| config FRAMEBUFFER_VESA_MODE_10B | |
| bool "132x50 text" | |
| config FRAMEBUFFER_VESA_MODE_10C | |
| bool "132x60 text" | |
| config FRAMEBUFFER_VESA_MODE_10D | |
| bool "320x200 32k-color (1:5:5:5)" | |
| config FRAMEBUFFER_VESA_MODE_10E | |
| bool "320x200 64k-color (5:6:5)" | |
| config FRAMEBUFFER_VESA_MODE_10F | |
| bool "320x200 16.8M-color (8:8:8)" | |
| config FRAMEBUFFER_VESA_MODE_110 | |
| bool "640x480 32k-color (1:5:5:5)" | |
| config FRAMEBUFFER_VESA_MODE_111 | |
| bool "640x480 64k-color (5:6:5)" | |
| config FRAMEBUFFER_VESA_MODE_112 | |
| bool "640x480 16.8M-color (8:8:8)" | |
| config FRAMEBUFFER_VESA_MODE_113 | |
| bool "800x600 32k-color (1:5:5:5)" | |
| config FRAMEBUFFER_VESA_MODE_114 | |
| bool "800x600 64k-color (5:6:5)" | |
| config FRAMEBUFFER_VESA_MODE_115 | |
| bool "800x600 16.8M-color (8:8:8)" | |
| config FRAMEBUFFER_VESA_MODE_116 | |
| bool "1024x768 32k-color (1:5:5:5)" | |
| config FRAMEBUFFER_VESA_MODE_117 | |
| bool "1024x768 64k-color (5:6:5)" | |
| config FRAMEBUFFER_VESA_MODE_118 | |
| bool "1024x768 16.8M-color (8:8:8)" | |
| config FRAMEBUFFER_VESA_MODE_119 | |
| bool "1280x1024 32k-color (1:5:5:5)" | |
| config FRAMEBUFFER_VESA_MODE_11A | |
| bool "1280x1024 64k-color (5:6:5)" | |
| config FRAMEBUFFER_VESA_MODE_11B | |
| bool "1280x1024 16.8M-color (8:8:8)" | |
| config FRAMEBUFFER_VESA_MODE_USER | |
| bool "Manually select VESA mode" | |
| endchoice | |
| # Map the config names to an integer (KB). | |
| config FRAMEBUFFER_VESA_MODE | |
| prompt "VESA mode" if FRAMEBUFFER_VESA_MODE_USER | |
| hex | |
| default 0x100 if FRAMEBUFFER_VESA_MODE_100 | |
| default 0x101 if FRAMEBUFFER_VESA_MODE_101 | |
| default 0x102 if FRAMEBUFFER_VESA_MODE_102 | |
| default 0x103 if FRAMEBUFFER_VESA_MODE_103 | |
| default 0x104 if FRAMEBUFFER_VESA_MODE_104 | |
| default 0x105 if FRAMEBUFFER_VESA_MODE_105 | |
| default 0x106 if FRAMEBUFFER_VESA_MODE_106 | |
| default 0x107 if FRAMEBUFFER_VESA_MODE_107 | |
| default 0x108 if FRAMEBUFFER_VESA_MODE_108 | |
| default 0x109 if FRAMEBUFFER_VESA_MODE_109 | |
| default 0x10A if FRAMEBUFFER_VESA_MODE_10A | |
| default 0x10B if FRAMEBUFFER_VESA_MODE_10B | |
| default 0x10C if FRAMEBUFFER_VESA_MODE_10C | |
| default 0x10D if FRAMEBUFFER_VESA_MODE_10D | |
| default 0x10E if FRAMEBUFFER_VESA_MODE_10E | |
| default 0x10F if FRAMEBUFFER_VESA_MODE_10F | |
| default 0x110 if FRAMEBUFFER_VESA_MODE_110 | |
| default 0x111 if FRAMEBUFFER_VESA_MODE_111 | |
| default 0x112 if FRAMEBUFFER_VESA_MODE_112 | |
| default 0x113 if FRAMEBUFFER_VESA_MODE_113 | |
| default 0x114 if FRAMEBUFFER_VESA_MODE_114 | |
| default 0x115 if FRAMEBUFFER_VESA_MODE_115 | |
| default 0x116 if FRAMEBUFFER_VESA_MODE_116 | |
| default 0x117 if FRAMEBUFFER_VESA_MODE_117 | |
| default 0x118 if FRAMEBUFFER_VESA_MODE_118 | |
| default 0x119 if FRAMEBUFFER_VESA_MODE_119 | |
| default 0x11A if FRAMEBUFFER_VESA_MODE_11A | |
| default 0x11B if FRAMEBUFFER_VESA_MODE_11B | |
| default 0x118 if FRAMEBUFFER_VESA_MODE_USER | |
| endif # FRAMEBUFFER_SET_VESA_MODE | |
| config WANT_LINEAR_FRAMEBUFFER | |
| bool | |
| default y if CHROMEOS | |
| default y if PAYLOAD_EDK2 | |
| default y if COREDOOM_SECONDARY_PAYLOAD | |
| choice | |
| prompt "Framebuffer mode" | |
| default VBE_LINEAR_FRAMEBUFFER if HAVE_VBE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER | |
| default GENERIC_LINEAR_FRAMEBUFFER if HAVE_LINEAR_FRAMEBUFFER && WANT_LINEAR_FRAMEBUFFER | |
| default VGA_TEXT_FRAMEBUFFER | |
| config VGA_TEXT_FRAMEBUFFER | |
| bool "Legacy VGA text mode" | |
| depends on HAVE_VGA_TEXT_FRAMEBUFFER | |
| help | |
| If this option is enabled, coreboot will initialize graphics in | |
| legacy VGA text mode or, if a VGA BIOS is used and a VESA mode set, | |
| switch to text mode before handing control to a payload. | |
| config VBE_LINEAR_FRAMEBUFFER | |
| bool "VESA framebuffer" | |
| depends on HAVE_VBE_LINEAR_FRAMEBUFFER | |
| help | |
| This option keeps the framebuffer mode set after coreboot finishes | |
| execution. If this option is enabled, coreboot will pass a | |
| framebuffer entry in its coreboot table and the payload will need a | |
| compatible driver. | |
| config GENERIC_LINEAR_FRAMEBUFFER | |
| bool "Linear \"high-resolution\" framebuffer" | |
| depends on HAVE_LINEAR_FRAMEBUFFER | |
| help | |
| This option enables a high-resolution, linear framebuffer. If this | |
| option is enabled, coreboot will pass a framebuffer entry in its | |
| coreboot table and the payload will need a compatible driver. | |
| endchoice | |
| # Workaround to have LINEAR_FRAMEBUFFER set in both cases | |
| # VBE_LINEAR_FRAMEBUFFER and GENERIC_LINEAR_FRAMEBUFFER. | |
| # `kconfig_lint` doesn't let us use the same name with | |
| # different texts in the choice above. | |
| config LINEAR_FRAMEBUFFER | |
| def_bool y | |
| depends on VBE_LINEAR_FRAMEBUFFER || GENERIC_LINEAR_FRAMEBUFFER | |
| config BOOTSPLASH | |
| prompt "Show graphical bootsplash" | |
| bool | |
| depends on LINEAR_FRAMEBUFFER | |
| help | |
| This option shows a graphical bootsplash screen. The graphics are | |
| loaded from the CBFS file bootsplash.jpg. | |
| You can either specify the location and file name of the | |
| image in the 'General' section or add it manually to CBFS, using, | |
| for example, cbfstool. | |
| config LINEAR_FRAMEBUFFER_MAX_WIDTH | |
| int "Maximum width in pixels" | |
| depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT | |
| default 2560 if SYSTEM_TYPE_LAPTOP | |
| default 3840 | |
| help | |
| Set the maximum width of the framebuffer. This may help with | |
| default fonts too tiny for high-resolution displays. | |
| config LINEAR_FRAMEBUFFER_MAX_HEIGHT | |
| int "Maximum height in pixels" | |
| depends on LINEAR_FRAMEBUFFER && MAINBOARD_USE_LIBGFXINIT | |
| default 1600 if SYSTEM_TYPE_LAPTOP | |
| default 2160 | |
| help | |
| Set the maximum height of the framebuffer. This may help with | |
| default fonts too tiny for high-resolution displays. | |
| endmenu # "Display" | |
| config PCI | |
| bool | |
| default n | |
| config PCI_IOBASE | |
| hex | |
| help | |
| The memory address of a memory-mapped translator that lets the | |
| CPU communicate with peripheral devices over PCI I/O space. | |
| if PCI | |
| config DOMAIN_RESOURCE_32BIT_LIMIT | |
| hex | |
| default 0xfe000000 | |
| help | |
| When the default pci_domain_read_resources() is used, | |
| keep 32-bit memory resources below this limit. This is | |
| used as a workaround for missing/wrong reservations of | |
| chipset resources that usually reside above this limit. | |
| config NO_ECAM_MMCONF_SUPPORT | |
| bool | |
| default n | |
| help | |
| Disable the use of the Enhanced Configuration | |
| Access mechanism (ECAM) method for accessing PCI config | |
| address space. | |
| config ECAM_MMCONF_SUPPORT | |
| bool | |
| default !NO_ECAM_MMCONF_SUPPORT | |
| help | |
| Enable the use of the Enhanced Configuration | |
| Access mechanism (ECAM) method for accessing PCI config | |
| address space. | |
| config PCIX_PLUGIN_SUPPORT | |
| bool | |
| default y | |
| config CARDBUS_PLUGIN_SUPPORT | |
| bool | |
| default y | |
| config AZALIA_HDA_CODEC_SUPPORT | |
| bool | |
| default n | |
| help | |
| Select this option to include the code to initialize Azalia HD audio | |
| codec chips. This will also add the hda_verb.c file from the | |
| mainboard directory to the build which contain the board-specific HD | |
| audio codec configuration. | |
| config PCIEXP_PLUGIN_SUPPORT | |
| bool | |
| default y | |
| config ECAM_MMCONF_BASE_ADDRESS | |
| hex | |
| depends on ECAM_MMCONF_SUPPORT | |
| config ECAM_MMCONF_BUS_NUMBER | |
| int | |
| depends on ECAM_MMCONF_SUPPORT | |
| help | |
| Total number of PCI buses in the system across all segment groups. | |
| The number needs to be a power of 2. For values <= 256, | |
| PCI_BUSES_PER_SEGMENT_GROUP is CONFIG_ECAM_MMCONF_BUS_NUMBER and | |
| PCI_SEGMENT_GROUP_COUNT is 1. For values > 256, | |
| PCI_BUSES_PER_SEGMENT_GROUP is 256 and PCI_SEGMENT_GROUP_COUNT is | |
| CONFIG_ECAM_MMCONF_BUS_NUMBER / 256. | |
| config ECAM_MMCONF_LENGTH | |
| hex | |
| depends on ECAM_MMCONF_SUPPORT | |
| default 0x02000000 if ECAM_MMCONF_BUS_NUMBER = 32 | |
| default 0x04000000 if ECAM_MMCONF_BUS_NUMBER = 64 | |
| default 0x08000000 if ECAM_MMCONF_BUS_NUMBER = 128 | |
| default 0x10000000 if ECAM_MMCONF_BUS_NUMBER = 256 | |
| default 0x20000000 if ECAM_MMCONF_BUS_NUMBER = 512 | |
| default 0x80000000 if ECAM_MMCONF_BUS_NUMBER = 1024 | |
| default 0x0 | |
| config PCI_ALLOW_BUS_MASTER | |
| bool "Allow coreboot to set optional PCI bus master bits" | |
| default y | |
| help | |
| For security reasons, bus mastering should be enabled as late as | |
| possible. In coreboot, it's usually not necessary and payloads | |
| should only enable it for devices they use. Since not all payloads | |
| enable bus mastering properly yet, this option gives some sort of | |
| "backwards compatibility" and is enabled by default to keep the | |
| traditional behaviour for now. This is currently necessary, for | |
| instance, for libpayload based payloads as the drivers don't enable | |
| bus mastering for PCI bridges. | |
| if PCI_ALLOW_BUS_MASTER | |
| config PCI_SET_BUS_MASTER_PCI_BRIDGES | |
| bool "PCI bridges" | |
| default y | |
| help | |
| Let coreboot configure bus mastering for PCI bridges. Enabling bus | |
| mastering for a PCI bridge also allows it to forward requests from | |
| downstream devices. Currently, payloads ignore this and only enable | |
| bus mastering for the downstream device. Hence, this option is needed | |
| for compatibility until payloads are fixed. | |
| config PCI_ALLOW_BUS_MASTER_ANY_DEVICE | |
| bool "Any devices" | |
| default y | |
| select PCI_SET_BUS_MASTER_PCI_BRIDGES | |
| help | |
| Allow coreboot to enable PCI bus mastering for any device. The actual | |
| selection of devices depends on the various PCI drivers in coreboot. | |
| endif # PCI_ALLOW_BUS_MASTER | |
| endif # PCI | |
| if PCIEXP_PLUGIN_SUPPORT | |
| config PCIEXP_COMMON_CLOCK | |
| prompt "Enable PCIe Common Clock" | |
| bool | |
| default n | |
| help | |
| Detect and enable Common Clock on PCIe links. | |
| config PCIEXP_ASPM | |
| prompt "Enable PCIe ASPM" | |
| bool | |
| default n | |
| help | |
| Detect and enable ASPM (Active State Power Management) on PCIe links. | |
| config PCIEXP_CLK_PM | |
| prompt "Enable PCIe Clock Power Management" | |
| bool | |
| default n | |
| help | |
| Detect and enable Clock Power Management on PCIe. | |
| config PCIEXP_L1_SUB_STATE | |
| prompt "Enable PCIe ASPM L1 SubState" | |
| bool | |
| depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT) | |
| default n | |
| help | |
| Detect and enable ASPM on PCIe links. | |
| config PCIEXP_SUPPORT_RESIZABLE_BARS | |
| prompt "Support PCIe Resizable BARs" | |
| bool | |
| depends on (ECAM_MMCONF_SUPPORT || PCI_IO_CFG_EXT) | |
| default n | |
| help | |
| When enabled, this will check PCIe devices for Resizable BAR support, | |
| and if found, will use this to discover the preferred BAR sizes of | |
| the device in preference over the traditional moving bits method. The | |
| amount of address space given out to devices in this manner (since | |
| it can range up to 8 EB) can be limited with the | |
| PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS Kconfig setting below. | |
| if PCIEXP_SUPPORT_RESIZABLE_BARS | |
| config PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS | |
| int "Bits of address space to give to Resizable BARs" | |
| range 20 63 # 1 MiB - 8 EiB | |
| default 29 # 512 MiB | |
| help | |
| This is the maximum number of bits of address space to allocate for | |
| PCIe devices with resizable BARs. For instance, if a device requests | |
| 30 bits of address space (1 GiB), but this field is set to 29, then | |
| the device will only be allocated 29 bits worth of address space (512 | |
| MiB). Valid values range from 20 (1 MiB) to 63 (8 EiB); these come | |
| from the Resizable BAR portion of the PCIe spec (7.8.6). | |
| endif # PCIEXP_SUPPORT_RESIZABLE_BARS | |
| config PCIEXP_LANE_ERR_STAT_CLEAR | |
| prompt "Enable Clear PCIe Lane Error Status" | |
| bool | |
| default n | |
| help | |
| Clear the PCIe Lane Error Status at the end of link training. | |
| config PCIEXP_HOTPLUG | |
| prompt "Enable PCIe Hotplug Support" | |
| bool | |
| default n | |
| help | |
| Allocate resources for PCIe hotplug bridges | |
| if PCIEXP_HOTPLUG | |
| config PCIEXP_HOTPLUG_BUSES | |
| int "PCI Express Hotplug Buses" | |
| default 8 | |
| help | |
| This is the number of buses allocated for hotplug PCI express | |
| bridges, for use by hotplugged child devices. The default is 8 | |
| buses. | |
| config PCIEXP_HOTPLUG_MEM | |
| hex "PCI Express Hotplug Memory" | |
| default 0x800000 | |
| help | |
| This is the amount of memory space, in bytes, to allocate to | |
| hotplug PCI express bridges, for use by hotplugged child devices. | |
| This size should be page-aligned. The default is 8 MiB. | |
| config PCIEXP_HOTPLUG_PREFETCH_MEM | |
| hex "PCI Express Hotplug Prefetch Memory" | |
| default 0x10000000 | |
| help | |
| This is the amount of pre-fetchable memory space, in bytes, to | |
| allocate to hot-plug PCI express bridges, for use by hotplugged | |
| child devices. This size should be page-aligned. The default is | |
| 256 MiB. | |
| config PCIEXP_HOTPLUG_PREFETCH_MEM_ABOVE_4G | |
| bool | |
| default y if !PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G | |
| default n | |
| help | |
| This enables prefetch memory allocation above 4G boundary for the | |
| hotplug resources. | |
| config PCIEXP_HOTPLUG_PREFETCH_MEM_BELOW_4G | |
| bool "PCI Express Hotplug Prefetch Memory Allocation below 4G boundary" | |
| default n | |
| help | |
| This enables prefetch memory allocation below 4G boundary for the | |
| hotplug resources. | |
| config PCIEXP_HOTPLUG_IO | |
| hex "PCI Express Hotplug I/O Space" | |
| default 0x800 | |
| help | |
| This is the amount of I/O space to allocate to hot-plug PCI | |
| express bridges, for use by hotplugged child devices. The default | |
| is 2 KiB. | |
| endif # PCIEXP_HOTPLUG | |
| endif # PCIEXP_PLUGIN_SUPPORT | |
| config EARLY_PCI_BRIDGE | |
| bool "Early PCI bridge" | |
| depends on PCI | |
| default n | |
| help | |
| While coreboot is executing code from ROM, the coreboot resource | |
| allocator has not been running yet. Hence PCI devices living behind | |
| a bridge are not yet visible to the system. | |
| This option enables static configuration for a single pre-defined | |
| PCI bridge function on bus 0. | |
| if EARLY_PCI_BRIDGE | |
| config EARLY_PCI_BRIDGE_DEVICE | |
| hex "bridge device" | |
| default 0x0 | |
| config EARLY_PCI_BRIDGE_FUNCTION | |
| hex "bridge function" | |
| default 0x0 | |
| config EARLY_PCI_MMIO_BASE | |
| hex "MMIO window base" | |
| default 0x0 | |
| endif # EARLY_PCI_BRIDGE | |
| config SUBSYSTEM_VENDOR_ID | |
| hex "Override PCI Subsystem Vendor ID" | |
| depends on PCI | |
| default 0x0000 | |
| help | |
| This config option will override the devicetree settings for | |
| PCI Subsystem Vendor ID. | |
| Note: This option is not meant for a board's Kconfig; use the | |
| devicetree setting `subsystemid` instead. | |
| config SUBSYSTEM_DEVICE_ID | |
| hex "Override PCI Subsystem Device ID" | |
| depends on PCI | |
| default 0x0000 | |
| help | |
| This config option will override the devicetree settings for | |
| PCI Subsystem Device ID. | |
| Note: This option is not meant for a board's Kconfig; use the | |
| devicetree setting `subsystemid` instead. | |
| config VGA_BIOS | |
| bool "Add a VGA BIOS image" | |
| depends on ARCH_X86 | |
| select VGA_ROM_RUN_DEFAULT | |
| help | |
| Select this option if you have a VGA BIOS image that you would | |
| like to add to your ROM. | |
| You will be able to specify the location and file name of the | |
| image later. | |
| config VGA_BIOS_FILE | |
| string "VGA BIOS path and filename" | |
| depends on VGA_BIOS | |
| default "vgabios.bin" | |
| help | |
| The path and filename of the file to use as VGA BIOS. | |
| config VGA_BIOS_ID | |
| string "VGA device PCI IDs" | |
| depends on VGA_BIOS | |
| default "1106,3230" | |
| help | |
| The comma-separated PCI vendor and device ID that would associate | |
| your vBIOS to your video card. | |
| Example: 1106,3230 | |
| In the above example 1106 is the PCI vendor ID (in hex, but without | |
| the "0x" prefix) and 3230 specifies the PCI device ID of the | |
| video card (also in hex, without "0x" prefix). | |
| This ID needs to match the PCI VID and DID in the VGA BIOS file's | |
| header and also needs to match the value returned by map_oprom_vendev | |
| if the remapping feature is used. | |
| Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices. | |
| config VGA_BIOS_SECOND | |
| bool "Add a 2nd video BIOS image" | |
| depends on ARCH_X86 && VGA_BIOS | |
| help | |
| Select this option if you have a 2nd video BIOS image that you would | |
| like to add to your ROM. | |
| config VGA_BIOS_SECOND_FILE | |
| string "2nd video BIOS path and filename" | |
| depends on VGA_BIOS_SECOND | |
| default "vbios2.bin" | |
| help | |
| The path and filename of the file to use as video BIOS. | |
| config VGA_BIOS_SECOND_ID | |
| string "Graphics device PCI IDs" | |
| depends on VGA_BIOS_SECOND | |
| help | |
| The comma-separated PCI vendor and device ID that would associate | |
| your vBIOS to your video card. | |
| Example: 1106,3230 | |
| In the above example 1106 is the PCI vendor ID (in hex, but without | |
| the "0x" prefix) and 3230 specifies the PCI device ID of the | |
| video card (also in hex, without "0x" prefix). | |
| Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices. | |
| config VGA_BIOS_DGPU | |
| bool "Add a discrete VGA BIOS image" | |
| depends on VGA_BIOS | |
| help | |
| Select this option if you have a VGA BIOS image for discrete GPU | |
| that you would like to add to your ROM. | |
| You will be able to specify the location and file name of the | |
| image later. | |
| config VGA_BIOS_DGPU_FILE | |
| string "Discrete VGA BIOS path and filename" | |
| depends on VGA_BIOS_DGPU | |
| default "vgabios_dgpu.bin" | |
| help | |
| The path and filename of the file to use as VGA BIOS for discrete GPU. | |
| config VGA_BIOS_DGPU_ID | |
| string "Discrete VGA device PCI IDs" | |
| depends on VGA_BIOS_DGPU | |
| default "1002,6663" | |
| help | |
| The comma-separated PCI vendor and device ID that would associate | |
| your VGA BIOS to your discrete video card. | |
| Examples: | |
| 1002,6663 for HD 8570M | |
| 1002,6665 for R5 M230 | |
| In the above examples 1002 is the PCI vendor ID (in hex, but without | |
| the "0x" prefix) and 6663 / 6665 specifies the PCI device ID of the | |
| discrete video card (also in hex, without "0x" prefix). | |
| Under GNU/Linux you can run `lspci -nn` to list the IDs of your PCI devices. | |
| config INTEL_GMA_HAVE_VBT | |
| bool | |
| help | |
| Select this in the mainboard Kconfig to indicate the board has | |
| a data.vbt file. | |
| config INTEL_GMA_ADD_VBT | |
| depends on SOC_INTEL_COMMON || CPU_INTEL_COMMON | |
| bool "Add a Video BIOS Table (VBT) binary to CBFS" | |
| default y if INTEL_GMA_HAVE_VBT | |
| help | |
| Add a VBT data file to CBFS. The VBT describes the integrated | |
| GPU and connections, and is needed by the GOP driver integrated into | |
| FSP and the OS driver in order to initialize the display. | |
| config INTEL_GMA_VBT_FILE | |
| string "VBT binary path and filename" | |
| depends on INTEL_GMA_ADD_VBT | |
| default "src/mainboard/\$(MAINBOARDDIR)/variants/\$(VARIANT_DIR)/data.vbt" \ | |
| if INTEL_GMA_HAVE_VBT && VARIANT_DIR != "" | |
| default "src/mainboard/\$(MAINBOARDDIR)/data.vbt" if INTEL_GMA_HAVE_VBT | |
| default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/vbt.bin" | |
| help | |
| The path and filename of the VBT binary. | |
| config SOFTWARE_I2C | |
| bool "Enable I2C controller emulation in software" | |
| default n | |
| help | |
| This config option will enable code to override the i2c_transfer | |
| routine with a (simple) software emulation of the protocol. This may | |
| be useful for debugging or on platforms where a driver for the real | |
| I2C controller is not (yet) available. The platform code needs to | |
| provide bindings to manually toggle I2C lines. | |
| config I2C_TRANSFER_TIMEOUT_US | |
| int "I2C transfer timeout in microseconds" | |
| default 500000 | |
| help | |
| Timeout for a read/write transfers on the I2C bus, that is, the | |
| maximum time a device could stretch clock bits before the transfer | |
| is aborted and an error returned. | |
| config RESOURCE_ALLOCATION_TOP_DOWN | |
| bool "Allocate resources from top down" | |
| default n if PAYLOAD_EDK2 | |
| default y | |
| help | |
| Top-down allocation is required to place resources above 4G by | |
| default (i.e. even when there is still space below). On some | |
| platforms, it might make a difference because of conflicts with | |
| undeclared resources. EDK2 is currently reported to also have | |
| problems on some platforms, at least with Intel's IGD. | |
| config ALWAYS_ALLOW_ABOVE_4G_ALLOCATION | |
| bool | |
| default n if ARCH_X86 | |
| default y | |
| help | |
| Don't limit mem resources to 4G, but to their actual limit. | |
| config XHCI_UTILS | |
| def_bool n | |
| help | |
| Provides xHCI utility functions. | |
| config D3COLD_SUPPORT | |
| bool | |
| default y | |
| help | |
| Enable this option if all devices on your system support the | |
| D3Cold power management state. The D3Cold state is a low-power | |
| state where the device has been powered down and is no longer | |
| able to maintain its context. This state can help reduce | |
| overall system power consumption, which can be beneficial for | |
| energy savings and thermal management. | |
| Please note that enabling D3Cold support may break system | |
| suspend-to-RAM (S3) functionality. | |
| source "src/device/dram/Kconfig" | |
| endmenu |