#
# This file is part of the coreboot project.
#
# Copyright (C) 2012 Advanced Micro Devices, Inc.
# Copyright (C) 2013-2014 Sage Electronic Engineering
#
# 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.
#

if BOARD_ODE_E20XX

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_AGESA_FAMILY16_KB
	select NORTHBRIDGE_AMD_AGESA_FAMILY16_KB
	select SOUTHBRIDGE_AMD_AGESA_YANGTZE
	select HAVE_OPTION_TABLE
	select HAVE_PIRQ_TABLE
	select HAVE_MP_TABLE
	select HAVE_ACPI_TABLES
	select BOARD_ROMSIZE_KB_4096
	select GFXUMA
	select SUPERIO_FINTEK_F81866D

config MAINBOARD_DIR
	string
	default bap/ode_e20XX

config MAINBOARD_PART_NUMBER
	string
	default "ODE_E20XX"

config HW_MEM_HOLE_SIZEK
	hex
	default 0x200000

config MAX_CPUS
	int
	default 4

config HW_MEM_HOLE_SIZE_AUTO_INC
	bool
	default n

config IRQ_SLOT_COUNT
	int
	default 11

config ONBOARD_VGA_IS_PRIMARY
	bool
	default y

config HUDSON_LEGACY_FREE
	bool
	default y

choice
	prompt "Select DDR3 clock"
	default BAP_E20_DDR3_1066
	help
	  Select your preferred DDR3 clock setting.

	  Note: This option changes the total power consumption.

	  If unsure, use DDR3-1066.

config BAP_E20_DDR3_800
	bool "Select DDR3-800"

config BAP_E20_DDR3_1066
	bool "Select DDR3-1066"

endchoice

config DIMM_SPD_SIZE
	int
	default 128

endif # BOARD_ODE_E20XX
