x86: Use mtrr_commit() with FSP2
[oweals/u-boot.git] / arch / x86 / Kconfig
index dfdd7564ea0013bdca536fbc85d8b4f22e2fcd64..47bf28c434f173a1a9dc9f7ea3875e8b8e9b959f 100644 (file)
@@ -32,7 +32,6 @@ config X86_RUN_32BIT
 config X86_RUN_64BIT
        bool "64-bit"
        select X86_64
-       select SUPPORT_SPL
        select SPL
        select SPL_SEPARATE_BSS
        help
@@ -83,6 +82,8 @@ endchoice
 # subarchitectures-specific options below
 config INTEL_MID
        bool "Intel MID platform support"
+       select REGMAP
+       select SYSCON
        help
          Select to build a U-Boot capable of supporting Intel MID
          (Mobile Internet Device) platform systems which do not have
@@ -106,12 +107,16 @@ source "board/intel/Kconfig"
 
 # platform-specific options below
 source "arch/x86/cpu/baytrail/Kconfig"
+source "arch/x86/cpu/braswell/Kconfig"
 source "arch/x86/cpu/broadwell/Kconfig"
 source "arch/x86/cpu/coreboot/Kconfig"
 source "arch/x86/cpu/ivybridge/Kconfig"
+source "arch/x86/cpu/efi/Kconfig"
 source "arch/x86/cpu/qemu/Kconfig"
 source "arch/x86/cpu/quark/Kconfig"
 source "arch/x86/cpu/queensbay/Kconfig"
+source "arch/x86/cpu/slimbootloader/Kconfig"
+source "arch/x86/cpu/tangier/Kconfig"
 
 # architecture-specific options below
 
@@ -148,6 +153,7 @@ config SMM_TSEG_SIZE
 config X86_RESET_VECTOR
        bool
        default n
+       select BINMAN
 
 # The following options control where the 16-bit and 32-bit init lies
 # If SPL is enabled then it normally holds this init code, and U-Boot proper
@@ -171,10 +177,17 @@ config X86_16BIT_INIT
 config SPL_X86_16BIT_INIT
        bool
        depends on X86_RESET_VECTOR
-       default y if X86_RESET_VECTOR && SPL
+       default y if X86_RESET_VECTOR && SPL && !TPL
        help
          This is enabled when 16-bit init is in SPL
 
+config TPL_X86_16BIT_INIT
+       bool
+       depends on X86_RESET_VECTOR
+       default y if X86_RESET_VECTOR && TPL
+       help
+         This is enabled when 16-bit init is in TPL
+
 config X86_32BIT_INIT
        bool
        depends on X86_RESET_VECTOR
@@ -316,9 +329,33 @@ config X86_RAMTEST
          to work correctly. It is not exhaustive but can save time by
          detecting obvious failures.
 
+config FLASH_DESCRIPTOR_FILE
+       string "Flash descriptor binary filename"
+       depends on HAVE_INTEL_ME
+       default "descriptor.bin"
+       help
+         The filename of the file to use as flash descriptor in the
+         board directory.
+
+config INTEL_ME_FILE
+       string "Intel Management Engine binary filename"
+       depends on HAVE_INTEL_ME
+       default "me.bin"
+       help
+         The filename of the file to use as Intel Management Engine in the
+         board directory.
+
+config USE_HOB
+       bool "Use HOB (Hand-Off Block)"
+       help
+         Select this option to access HOB (Hand-Off Block) data structures
+         and parse HOBs. This HOB infra structure can be reused with
+         different solutions across different platforms.
+
 config HAVE_FSP
        bool "Add an Firmware Support Package binary"
        depends on !EFI
+       select USE_HOB
        help
          Select this option to add an Firmware Support Package binary to
          the resulting U-Boot image. It is a binary blob which U-Boot uses
@@ -327,6 +364,37 @@ config HAVE_FSP
          Note: Without this binary U-Boot will not be able to set up its
          SDRAM so will not boot.
 
+config USE_CAR
+       bool "Use Cache-As-RAM (CAR) to get temporary RAM at start-up"
+       default y if !HAVE_FSP
+       help
+         Select this option if your board uses CAR init code, typically in a
+         car.S file, to get some initial memory for code execution. This is
+         common with Intel CPUs which don't use FSP.
+
+choice
+       prompt "FSP version"
+       depends on HAVE_FSP
+       default FSP_VERSION1
+       help
+         Selects the FSP version to use. Intel has published several versions
+         of the FSP External Architecture Specification and this allows
+         selection of the version number used by a particular SoC.
+
+config FSP_VERSION1
+       bool "FSP version 1.x"
+       help
+         This covers versions 1.0 and 1.1a. See here for details:
+         https://github.com/IntelFsp/fsp/wiki
+
+config FSP_VERSION2
+       bool "FSP version 2.x"
+       help
+         This covers versions 2.0 and 2.1. See here for details:
+         https://github.com/IntelFsp/fsp/wiki
+
+endchoice
+
 config FSP_FILE
        string "Firmware Support Package binary filename"
        depends on HAVE_FSP
@@ -392,8 +460,8 @@ config ENABLE_MRC_CACHE
 
          For platforms that use Intel FSP for the memory initialization,
          please check FSP output HOB via U-Boot command 'fsp hob' to see
-         if there is FSP_NON_VOLATILE_STORAGE_HOB_GUID (asm/fsp/fsp_hob.h).
-         If such GUID does not exist, MRC cache is not avaiable on such
+         if there is FSP_NON_VOLATILE_STORAGE_HOB_GUID (asm/fsp1/fsp_hob.h).
+         If such GUID does not exist, MRC cache is not available on such
          platform (eg: Intel Queensbay), which means selecting this option
          here does not make any difference.
 
@@ -501,6 +569,13 @@ config AP_STACK_SIZE
          the memory used by this initialisation process. Typically 4KB is
          enough space.
 
+config CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED
+       bool
+       help
+         This option indicates that the turbo mode setting is not package
+         scoped. i.e. turbo_enable() needs to be called on not just the
+         bootstrap processor (BSP).
+
 config HAVE_VGA_BIOS
        bool "Add a VGA BIOS image"
        help
@@ -523,6 +598,61 @@ config VGA_BIOS_ADDR
          address of 0xfff90000 indicates that the image will be put at offset
          0x90000 from the beginning of a 1MB flash device.
 
+config HAVE_VBT
+       bool "Add a Video BIOS Table (VBT) image"
+       depends on HAVE_FSP
+       help
+         Select this option if you have a Video BIOS Table (VBT) image that
+         you would like to add to your ROM. This is normally required if you
+         are using an Intel FSP firmware that is complaint with spec 1.1 or
+         later to initialize the integrated graphics device (IGD).
+
+         Video BIOS Table, or VBT, provides platform and board specific
+         configuration information to the driver that is not discoverable
+         or available through other means. By other means the most used
+         method here is to read EDID table from the attached monitor, over
+         Display Data Channel (DDC) using two pin I2C serial interface. VBT
+         configuration is related to display hardware and is available via
+         the ACPI OpRegion or, on older systems, in the PCI ROM (Option ROM).
+
+config VBT_FILE
+       string "Video BIOS Table (VBT) image filename"
+       depends on HAVE_VBT
+       default "vbt.bin"
+       help
+         The filename of the file to use as Video BIOS Table (VBT) image
+         in the board directory.
+
+config VBT_ADDR
+       hex "Video BIOS Table (VBT) image location"
+       depends on HAVE_VBT
+       default 0xfff90000
+       help
+         The location of Video BIOS Table (VBT) image in the SPI flash. For
+         example, base address of 0xfff90000 indicates that the image will
+         be put at offset 0x90000 from the beginning of a 1MB flash device.
+
+config VIDEO_FSP
+       bool "Enable FSP framebuffer driver support"
+       depends on HAVE_VBT && DM_VIDEO
+       help
+         Turn on this option to enable a framebuffer driver when U-Boot is
+         using Video BIOS Table (VBT) image for FSP firmware to initialize
+         the integrated graphics device.
+
+config ROM_TABLE_ADDR
+       hex
+       default 0xf0000
+       help
+         All x86 tables happen to like the address range from 0x0f0000
+         to 0x100000. We use 0xf0000 as the starting address to store
+         those tables, including PIRQ routing table, Multi-Processor
+         table and ACPI table.
+
+config ROM_TABLE_SIZE
+       hex
+       default 0x10000
+
 menu "System tables"
        depends on !EFI && !SYS_COREBOOT
 
@@ -571,6 +701,38 @@ config GENERATE_ACPI_TABLE
 
 endmenu
 
+config HAVE_ACPI_RESUME
+       bool "Enable ACPI S3 resume"
+       select ENABLE_MRC_CACHE
+       help
+         Select this to enable ACPI S3 resume. S3 is an ACPI-defined sleeping
+         state where all system context is lost except system memory. U-Boot
+         is responsible for restoring the machine state as it was before sleep.
+         It needs restore the memory controller, without overwriting memory
+         which is not marked as reserved. For the peripherals which lose their
+         registers, U-Boot needs to write the original value. When everything
+         is done, U-Boot needs to find out the wakeup vector provided by OSes
+         and jump there.
+
+config S3_VGA_ROM_RUN
+       bool "Re-run VGA option ROMs on S3 resume"
+       depends on HAVE_ACPI_RESUME
+       help
+         Execute VGA option ROMs in U-Boot when resuming from S3. Normally
+         this is needed when graphics console is being used in the kernel.
+
+         Turning it off can reduce some resume time, but be aware that your
+         graphics console won't work without VGA options ROMs. Set it to N
+         if your kernel is only on a serial console.
+
+config STACK_SIZE
+       hex
+       depends on HAVE_ACPI_RESUME
+       default 0x1000
+       help
+         Estimated U-Boot's runtime stack size that needs to be reserved
+         during an ACPI S3 resume.
+
 config MAX_PIRQ_LINKS
        int
        default 8
@@ -613,13 +775,28 @@ config PCIE_ECAM_SIZE
          maximum number of PCI buses as defined by the PCI specification.
 
 config I8259_PIC
-       bool
+       bool "Enable Intel 8259 compatible interrupt controller"
        default y
        help
          Intel 8259 ISA compatible chipset incorporates two 8259 (master and
          slave) interrupt controllers. Include this to have U-Boot set up
          the interrupt correctly.
 
+config APIC
+       bool "Enable Intel Advanced Programmable Interrupt Controller"
+       default y
+       help
+         The (A)dvanced (P)rogrammable (I)nterrupt (C)ontroller is responsible
+         for catching interrupts and distributing them to one or more CPU
+         cores. In most cases there are some LAPICs (local) for each core and
+         one I/O APIC. This conjunction is found on most modern x86 systems.
+
+config PINCTRL_ICH6
+       bool
+       help
+         Intel ICH6 compatible chipset pinctrl driver. It needs to work
+         together with the ICH6 compatible gpio driver.
+
 config I8254_TIMER
        bool
        default y
@@ -651,6 +828,4 @@ config HIGH_TABLE_SIZE
          Increse it if the default size does not fit the board's needs.
          This is most likely due to a large ACPI DSDT table is used.
 
-source "arch/x86/lib/efi/Kconfig"
-
 endmenu