Add support for enabling PCIe Common Clock and ASPM
[coreboot.git] / src / devices / Kconfig
index 96084f95b2c3806038b2752572c7ce9b8ec0a0ca..516881951907b7c5123490af43fce5f1028a19e3 100644 (file)
@@ -1,12 +1,12 @@
 ##
 ## This file is part of the coreboot project.
 ##
-## Copyright (C) 2007 coresystems GmbH
+## 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
+## 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
@@ -27,60 +27,116 @@ config VGA_BRIDGE_SETUP
 
 # TODO: Explain differences (if any) for onboard cards.
 config VGA_ROM_RUN
-       bool "Run VGA option ROMs"
+       bool "Run VGA Option ROMs"
        default y
        help
-         Execute VGA option ROMs, if found. This is required to enable
+         Execute VGA Option ROMs, if found. This is required to enable
          PCI/AGP/PCI-E video cards.
 
+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 when coming out of an S3 resume.
+
 config PCI_ROM_RUN
-       bool "Run non-VGA option ROMs"
+       bool "Run non-VGA Option ROMs"
        default y
        help
-         Execute non-VGA PCI option ROMs, if found.
+         Execute non-VGA PCI Option ROMs, if found.
 
-         Examples include IDE/SATA controller option ROMs and option ROMs
+         Examples include IDE/SATA controller Option ROMs and Option ROMs
          for network cards (NICs).
 
-# TODO: Describe YABEL vs. x86emu differences in more detail.
+config ON_DEVICE_ROM_RUN
+       bool "Run Option ROMs on PCI devices"
+       default y
+       help
+         Execute Option ROMs that are stored on PCI/PCIe/AGP devices.
+
+         If disabled, only Option ROMs stored in CBFS will be executed. 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.
+
+         If unsure, say Y
+
 choice
        prompt "Option ROM execution type"
-       default PCI_OPTION_ROM_RUN_REALMODE
-       depends on PCI_ROM_RUN || VGA_ROM_RUN
+       default PCI_OPTION_ROM_RUN_YABEL if !ARCH_X86
+       default PCI_OPTION_ROM_RUN_REALMODE if ARCH_X86
+       depends on PCI_ROM_RUN || VGA_ROM_RUN || GEODE_VSA
 
 config PCI_OPTION_ROM_RUN_REALMODE
-       prompt "Real mode"
+       prompt "Native mode"
        bool
+       depends on ARCH_X86
        help
-         If you select this option, PCI option ROMs will be executed
-         natively on the hardware (a 32bit x86 system is required).
+         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 "YABEL"
+       prompt "Secure mode"
        bool
+       depends on !GEODE_VSA
        help
-         If you select this option, the YABEL BIOS emulator will be used to
-         execute PCI option ROMs.
+         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.
 
-config PCI_OPTION_ROM_RUN_X86EMU
-       prompt "x86emu"
+         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
-         If you select this option, the x86emu BIOS emulator will be used to
-         execute PCI option ROMs.
+         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.
 
-endchoice
+config YABEL_VIRTMEM_LOCATION
+       prompt "Location of YABEL's virtual memory"
+       hex
+       depends on PCI_OPTION_ROM_RUN_YABEL && EXPERT
+       default 0x1000000
+       help
+         YABEL requires 1MB memory for its CPU emulation. This memory is
+         normally located at 16MB.
 
-# TODO: Describe better, and/or make a "choice" selection for this.
-config YABEL_DEBUG_FLAGS
-       prompt "Hex value for YABEL debug flags"
+config YABEL_VIRTMEM_LOCATION
        hex
-       default 0x0
+       depends on PCI_OPTION_ROM_RUN_YABEL && !EXPERT
+       default 0x1000000
+
+config YABEL_DIRECTHW
+       prompt "Direct hardware access"
+       bool
        depends on PCI_OPTION_ROM_RUN_YABEL
        help
-         See debug.h for values 0 is no debug output, 0x31ff is _verbose_.
-
-config CONSOLE_VGA_MULTI
+         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
 
@@ -107,3 +163,17 @@ config AGP_PLUGIN_SUPPORT
 config CARDBUS_PLUGIN_SUPPORT
        bool
        default y
+
+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 on PCIe links.