| ## |
| ## This file is part of the coreboot project. |
| ## |
| ## Copyright (C) 2007-2010 coresystems GmbH |
| ## (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH) |
| ## |
| ## This program is free software; you can redistribute it and/or modify |
| ## it under the terms of the GNU General Public License as published by |
| ## the Free Software Foundation; version 2 of the License. |
| ## |
| ## This program is distributed in the hope that it will be useful, |
| ## but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ## GNU General Public License for more details. |
| ## |
| |
| menu "Devices" |
| |
| # Only set this in the mainboard |
| config MAINBOARD_HAS_NATIVE_VGA_INIT |
| bool |
| default n |
| |
| config HAVE_VGA_TEXT_FRAMEBUFFER |
| bool |
| help |
| Selected by graphics drivers that support legacy VGA text mode. |
| |
| config HAVE_VBE_LINEAR_FRAMEBUFFER |
| bool |
| help |
| Selected by graphics drivers that can set up a VBE linear-framebuffer |
| mode. |
| |
| config HAVE_LINEAR_FRAMEBUFFER |
| bool |
| help |
| Selected by graphics drivers that can set up a generic linear |
| framebuffer. |
| |
| config MAINBOARD_DO_NATIVE_VGA_INIT |
| bool "Use native graphics initialization" |
| depends on MAINBOARD_HAS_NATIVE_VGA_INIT |
| default n |
| 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. |
| |
| If unsure, say N. |
| |
| config MAINBOARD_HAS_LIBGFXINIT |
| def_bool n |
| select MAINBOARD_HAS_NATIVE_VGA_INIT |
| help |
| Selected by mainboards that implement support for `libgfxinit`. |
| Usually this requires a list of ports to be probed for displays. |
| |
| config MAINBOARD_USE_LIBGFXINIT |
| bool "Use libgfxinit for native graphics initialization" |
| depends on MAINBOARD_DO_NATIVE_VGA_INIT |
| depends on MAINBOARD_HAS_LIBGFXINIT |
| select HAVE_VGA_TEXT_FRAMEBUFFER |
| select HAVE_LINEAR_FRAMEBUFFER |
| select RAMSTAGE_LIBHWBASE |
| select VGA if VGA_TEXT_FRAMEBUFFER |
| select NO_EDID_FILL_FB |
| default n |
| 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" |
| default n if PAYLOAD_SEABIOS |
| default y if !PAYLOAD_SEABIOS |
| depends on PCI && !MAINBOARD_DO_NATIVE_VGA_INIT |
| select HAVE_VGA_TEXT_FRAMEBUFFER |
| help |
| Execute VGA Option ROMs in coreboot if found. This is required |
| 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. |
| |
| If unsure, say N when using SeaBIOS as payload, Y otherwise. |
| |
| 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 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 || GEODE_VSA |
| |
| config PCI_OPTION_ROM_RUN_REALMODE |
| prompt "Native mode" |
| bool |
| depends on ARCH_X86 |
| 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 |
| depends on !GEODE_VSA |
| 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. |
| |
| config MULTIPLE_VGA_ADAPTERS |
| bool |
| default n |
| |
| menu "Display" |
| depends on HAVE_VGA_TEXT_FRAMEBUFFER || HAVE_LINEAR_FRAMEBUFFER |
| |
| config FRAMEBUFFER_SET_VESA_MODE |
| prompt "Set framebuffer graphics resolution" |
| bool |
| 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_117 |
| 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 0x117 if FRAMEBUFFER_VESA_MODE_USER |
| |
| config BOOTSPLASH |
| prompt "Show graphical bootsplash" |
| bool |
| 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. |
| |
| endif # FRAMEBUFFER_SET_VESA_MODE |
| |
| choice |
| prompt "Framebuffer mode" |
| 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 |
| |
| endmenu # "Display" |
| |
| config SMBUS_HAS_AUX_CHANNELS |
| bool |
| default n |
| |
| config PCI |
| bool |
| default n |
| |
| if PCI |
| |
| config NO_MMCONF_SUPPORT |
| bool |
| default n |
| |
| config MMCONF_SUPPORT |
| bool |
| default !NO_MMCONF_SUPPORT |
| |
| config HYPERTRANSPORT_PLUGIN_SUPPORT |
| bool |
| default n |
| |
| config PCIX_PLUGIN_SUPPORT |
| bool |
| default y |
| |
| config CARDBUS_PLUGIN_SUPPORT |
| bool |
| default y |
| |
| config AZALIA_PLUGIN_SUPPORT |
| bool |
| default n |
| |
| config PCIEXP_PLUGIN_SUPPORT |
| bool |
| default y |
| |
| 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 (MMCONF_SUPPORT || PCI_IO_CFG_EXT) |
| default n |
| help |
| Detect and enable ASPM on PCIe links. |
| |
| 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. |
| |
| 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. |
| |
| config VGA_BIOS |
| bool "Add a VGA BIOS image" |
| depends on ARCH_X86 |
| 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 VGA BIOS 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 INTEL_MBI |
| bool "Add an MBI image" |
| depends on NORTHBRIDGE_INTEL_I82830 |
| help |
| Select this option if you have an Intel MBI 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 MBI_FILE |
| string "Intel MBI path and filename" |
| depends on INTEL_MBI |
| default "mbi.bin" |
| help |
| The path and filename of the file to use as VGA BIOS. |
| |
| 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. |
| |
| endmenu |