##
## This file is part of the coreboot project.
##
## Copyright (C) 2010 Google Inc.
##
## 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.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##


config NORTHBRIDGE_INTEL_SANDYBRIDGE
	bool
	select NORTHBRIDGE_INTEL_COMMON_MRC_CACHE
	select CPU_INTEL_MODEL_206AX
	select HAVE_DEBUG_RAM_SETUP
	select INTEL_GMA_ACPI
	select RELOCATABLE_RAMSTAGE

config NORTHBRIDGE_INTEL_IVYBRIDGE
	bool
	select NORTHBRIDGE_INTEL_COMMON_MRC_CACHE
	select CPU_INTEL_MODEL_306AX
	select HAVE_DEBUG_RAM_SETUP
	select INTEL_GMA_ACPI
	select RELOCATABLE_RAMSTAGE

if NORTHBRIDGE_INTEL_IVYBRIDGE || NORTHBRIDGE_INTEL_SANDYBRIDGE

config USE_NATIVE_RAMINIT
	bool "Use native raminit"
	default y
	help
	  Select if you want to use coreboot implementation of raminit rather than
	  System Agent/MRC.bin. You should answer Y.

config CBFS_SIZE
	hex
	default 0x100000

config VGA_BIOS_ID
	string
	default "8086,0106"

config CACHE_MRC_SIZE_KB
	int
	default 512

config SANDYBRIDGE_IVYBRIDGE_LVDS
	def_bool n
	select VGA
	select MAINBOARD_HAS_NATIVE_VGA_INIT
	select MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG

# Select VGA & INTEL_EDID if MAINBOARD_DO_NATIVE_VGA_INIT is enabled.
config MAINBOARD_DO_NATIVE_VGA_INIT
	select VGA
	select INTEL_EDID

config MRC_CACHE_SIZE
	hex
	depends on !CHROMEOS
	default 0x10000

config BOOTBLOCK_NORTHBRIDGE_INIT
	string
	default "northbridge/intel/sandybridge/bootblock.c"

if USE_NATIVE_RAMINIT

config DCACHE_RAM_BASE
	hex
	default 0xfefe0000

config DCACHE_RAM_SIZE
	hex
	default 0x20000

config DCACHE_RAM_MRC_VAR_SIZE
	hex
	default 0x0

endif # USE_NATIVE_RAMINIT

if !USE_NATIVE_RAMINIT

config DCACHE_RAM_BASE
	hex
	default 0xff7e0000

config DCACHE_RAM_SIZE
	hex
	default 0x1c000

config DCACHE_RAM_MRC_VAR_SIZE
	hex
	default 0x4000

config MRC_FILE
	string "Intel System Agent path and filename"
	default "3rdparty/blobs/northbridge/intel/sandybridge/systemagent-r6.bin"
	help
	  The path and filename of the file to use as System Agent
	  binary.

config MMCONF_BASE_ADDRESS
	hex
	default 0xf0000000

endif # !USE_NATIVE_RAMINIT

endif
