#
# This file is part of the coreboot project.
#
# Copyright (C) 2011 Advanced Micro Devices, 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.
#
# 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 CPU_AMD_AGESA_FAMILY10
	bool
	select CPU_AMD_MODEL_10XXX
	select PCI_IO_CFG_EXT
	select X86_AMD_FIXED_MTRRS

if CPU_AMD_AGESA_FAMILY10

config EXT_RT_TBL_SUPPORT
	bool
	default n

config EXT_CONF_SUPPORT
	bool
	default n

config CBB
	hex
	default 0x0

config CDB
	hex
	default 0x18

config XIP_ROM_SIZE
	hex
	default 0x80000

config HAVE_INIT_TIMER
	bool
	default y

config REDIRECT_IDS_HDT_CONSOLE_TO_SERIAL
        bool "Redirect AGESA IDS_HDT_CONSOLE to serial console"
        default n
        help
          This Option allows you to redirect the AMD AGESA IDS_HDT_CONSOLE debug information to the serial console.

          Warning: Only enable this option when debuging or tracing AMD AGESA code.

endif #CPU_AMD_AGESA_FAMILY10
