##
## This file is part of the coreboot project.
##
## Copyright (C) 2011-2012  Alexandru Gagniuc <mr.nuke.me@gmail.com>
##
## 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, either version 2 of the License, or
## (at your option) any later version.
##
## 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.
##

if BOARD_VIA_EPIA_M850

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_VIA_NANO
	select NORTHBRIDGE_VIA_VX900
	select SUPERIO_FINTEK_F81865F
	select HAVE_PIRQ_TABLE
	select PIRQ_ROUTE
	select HAVE_MP_TABLE
	#select HAVE_OPTION_TABLE
	#select HAVE_ACPI_TABLES
	#select HAVE_ACPI_RESUME
	#select BOARD_HAS_FADT
	select BOARD_ROMSIZE_KB_512

config MAINBOARD_DIR
	string
	default via/epia-m850

config MAINBOARD_PART_NUMBER
	string
	default "EPIA-M850"

config IRQ_SLOT_COUNT
	int
	default 13

endif # BOARD_VIA_EPIA_M850
