#
# 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 NORTHBRIDGE_INTEL_IVYBRIDGE

config CACHE_MRC_BIN
	bool
	default n

config CACHE_MRC_SIZE_KB
	int
	default 512

config DCACHE_RAM_BASE
	hex
	default 0xff7e0000

config DCACHE_RAM_SIZE
	hex
	default 0x20000

config HAVE_MRC
        bool "Add a System Agent binary"
        help
          Select this option to add a System Agent binary to
          the resulting U-Boot image. MRC stands for Memory Reference Code.
          It is a binary blob which U-Boot uses to set up SDRAM.

          Note: Without this binary U-Boot will not be able to set up its
          SDRAM so will not boot.

config DCACHE_RAM_MRC_VAR_SIZE
	hex
	default 0x4000
	help
	  This is the amount of CAR (Cache as RAM) reserved for use by the
	  memory reference code. This should be set to 16KB (0x4000 hex)
	  so that MRC has enough space to run.

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.

endif
