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


config NORTHBRIDGE_INTEL_SANDYBRIDGE
	bool
	select CACHE_MRC_BIN
	select CPU_INTEL_MODEL_206AX

config NORTHBRIDGE_INTEL_IVYBRIDGE
	bool
	select CACHE_MRC_BIN
	select CPU_INTEL_MODEL_306AX

if NORTHBRIDGE_INTEL_SANDYBRIDGE

config VGA_BIOS_ID
	string
	default "8086,0106"

config CACHE_MRC_SIZE_KB
	int
	default 256

config DCACHE_RAM_BASE
	hex
	default 0xff7f0000

config DCACHE_RAM_SIZE
	hex
	default 0x10000

endif

if NORTHBRIDGE_INTEL_IVYBRIDGE

config VGA_BIOS_ID
	string
	default "8086,0166"

config EXTERNAL_MRC_BLOB
	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

endif

if NORTHBRIDGE_INTEL_SANDYBRIDGE || NORTHBRIDGE_INTEL_IVYBRIDGE

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 MRC_FILE
	string "Intel System Agent path and filename"
	depends on HAVE_MRC
	default "systemagent-ivybridge.bin" if NORTHBRIDGE_INTEL_IVYBRIDGE
	default "systemagent-sandybridge.bin" if NORTHBRIDGE_INTEL_SANDYBRIDGE
	help
	  The path and filename of the file to use as System Agent
	  binary.

config CPU_SPECIFIC_OPTIONS
	def_bool y
	select SMM_TSEG
	select ARCH_BOOTBLOCK_X86_32
	select ARCH_ROMSTAGE_X86_32
	select ARCH_RAMSTAGE_X86_32
	select SSE2
	select UDELAY_LAPIC
	select CPU_MICROCODE_IN_CBFS
	select TSC_SYNC_MFENCE
	select HAVE_INTEL_ME
	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

config CPU_INTEL_SOCKET_RPGA989
	bool

if CPU_INTEL_SOCKET_RPGA989

config SOCKET_SPECIFIC_OPTIONS # dummy
	def_bool y
	select MMX
	select SSE
	select CACHE_AS_RAM

config CACHE_MRC_BIN
	bool
	default n

endif
