##
## This file is part of the coreboot project.
##
## Copyright (C) 2007-2009 coresystems GmbH
##
## 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.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
config NORTHBRIDGE_AMD_AGESA_FAMILY12
	bool
	select HAVE_DEBUG_RAM_SETUP
	select HAVE_DEBUG_SMBUS
	select HYPERTRANSPORT_PLUGIN_SUPPORT
	select MMCONF_SUPPORT

if NORTHBRIDGE_AMD_AGESA_FAMILY12

config HT3_SUPPORT
	bool
	default y

config HW_MEM_HOLE_SIZEK
	hex
	default 0x100000

config HW_MEM_HOLE_SIZE_AUTO_INC
	bool
	default n

config MMCONF_BASE_ADDRESS
	hex
	default 0xe0000000

config MMCONF_BUS_NUMBER
	int
	default 256

config DIMM_DDR3
	bool
	default n

config DIMM_REGISTERED
	bool
	default n

if !DIMM_REGISTERED
	config DIMM_SUPPORT
		hex
		default 0x0004
endif

if DIMM_DDR3
	if DIMM_REGISTERED
	  config DIMM_SUPPORT
		  hex
		  default 0x0005
	endif
endif

endif # NORTHBRIDGE_AMD_AGESA_FAMILY_12
