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

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select ARCH_X86
	select CPU_INTEL_SLOT_1
	select NORTHBRIDGE_INTEL_I440BX
	select SOUTHBRIDGE_INTEL_I82371EB
	select SUPERIO_WINBOND_W83977TF
	select HAVE_PIRQ_TABLE
	select HAVE_MP_TABLE
	select SMP
	select IOAPIC
	select UDELAY_TSC
	select BOARD_ROMSIZE_KB_256
	select SDRAMPWR_4DIMM

config MAINBOARD_DIR
	string
	default asus/p2b-ds

config MAINBOARD_PART_NUMBER
	string
	default "P2B-DS"

config IRQ_SLOT_COUNT
	int
	default 7

config MAX_CPUS
	int
	default 2

endif # BOARD_ASUS_P2B_DS
