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

# FIXME: It's a PC87360 actually.
# FIXME: It's an i810E actually!
# FIXME: ROM chip size really 512KB?
if BOARD_HP_E_VECTRA_P2706T

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_NSC_PC87360
	select HAVE_PIRQ_TABLE
	select UDELAY_TSC
	select BOARD_ROMSIZE_KB_512
	select GFXUMA

config MAINBOARD_DIR
	string
	default hp/e_vectra_p2706t

config MAINBOARD_PART_NUMBER
	string
	default "e-Vectra P2706T"

config IRQ_SLOT_COUNT
	int
	default 3

endif # BOARD_HP_E_VECTRA_P2706T
