##
## 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_ASUS_MEW_AM

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select ARCH_X86
	select CPU_INTEL_SOCKET_PGA370
	select NORTHBRIDGE_INTEL_I82810
	select SOUTHBRIDGE_INTEL_I82801AX
	select SUPERIO_SMSC_SMSCSUPERIO
	select HAVE_PIRQ_TABLE
	select UDELAY_TSC
	select BOARD_ROMSIZE_KB_512
	select HAVE_MAINBOARD_RESOURCES
	select GFXUMA

config MAINBOARD_DIR
	string
	default asus/mew-am

config MAINBOARD_PART_NUMBER
	string
	default "MEW-AM"

config IRQ_SLOT_COUNT
	int
	default 8

endif # BOARD_ASUS_MEW_AM
