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

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-d

config MAINBOARD_PART_NUMBER
	string
	default "P2B-D"

config IRQ_SLOT_COUNT
	int
	default 6

config MAX_CPUS
	int
	default 2

endif # BOARD_ASUS_P2B_D
