##
## This file is part of the coreboot project.
##
## Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
##
## 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
##
if BOARD_AMD_RUMBA

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select ARCH_X86
	select CPU_AMD_GEODE_GX2
	select NORTHBRIDGE_AMD_GX2
	select SOUTHBRIDGE_AMD_CS5536
	select UDELAY_TSC
	select HAVE_PIRQ_TABLE
	select BOARD_ROMSIZE_KB_256
	select POWER_BUTTON_FORCE_ENABLE
	select GX2_PROCESSOR_MHZ_366

config MAINBOARD_DIR
	string
	default amd/rumba

config MAINBOARD_PART_NUMBER
	string
	default "Rumba"

config IRQ_SLOT_COUNT
	int
	default 2

endif # BOARD_AMD_RUMBA
