#
# From Coreboot src/northbridge/intel/sandybridge/Kconfig
#
# Copyright (C) 2010 Google Inc.
#
# SPDX-License-Identifier:	GPL-2.0

config NORTHBRIDGE_INTEL_IVYBRIDGE
	bool
	select CACHE_MRC_BIN if HAVE_MRC
	imply HAVE_INTEL_ME
	imply ENABLE_MRC_CACHE
	imply AHCI_PCI
	imply ICH_SPI
	imply INTEL_ICH6_GPIO
	imply SCSI
	imply SPI_FLASH
	imply USB
	imply USB_EHCI_HCD
	imply VIDEO_VESA

if NORTHBRIDGE_INTEL_IVYBRIDGE

config DCACHE_RAM_BASE
	default 0xff7e0000

config DCACHE_RAM_SIZE
	default 0x20000

config DCACHE_RAM_MRC_VAR_SIZE
	default 0x4000

config CPU_SPECIFIC_OPTIONS
	def_bool y
	select SMM_TSEG
	select X86_RAMTEST

config SMM_TSEG_SIZE
	hex
	default 0x800000

config ENABLE_VMX
	bool "Enable VMX for virtualization"
	default n
	help
	  Virtual Machine Extensions are provided in many x86 CPUs. These
	  provide various facilities for allowing a host OS to provide an
	  environment where potentially several guest OSes have only
	  limited access to the underlying hardware. This is achieved
	  without resorting to software trapping and/or instruction set
	  emulation (which would be very slow).

	  Intel's implementation of this is called VT-x. This option enables
	  VT-x this so that the OS that is booted by U-Boot can make use of
	  these facilities. If this option is not enabled, then the host OS
	  will be unable to support virtualisation, or it will run very
	  slowly.

config FSP_ADDR
	hex
	default 0xfff80000

config FSP_USE_UPD
	bool
	default n

config FSP_BROKEN_HOB
	bool
	default y

endif
