##
## This file is part of the coreboot project.
##
## Copyright (C) 2010 Nils Jacobs
##
## 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_WYSE_S50

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 PIRQ_ROUTE
	select BOARD_ROMSIZE_KB_256
	select POWER_BUTTON_FORCE_DISABLE
	select GX2_PROCESSOR_MHZ_366

config MAINBOARD_DIR
	string
	default wyse/s50

config MAINBOARD_PART_NUMBER
	string
	default "s50"

config IRQ_SLOT_COUNT
	int
	default 3

endif # BOARD_WYSE_S50
