##
## This file is part of the coreboot project.
##
## Copyright (C) 2012 Ricardo Martins <rasmartins@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; 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_IEI_PM_LX2_800_R10

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	select ARCH_X86
	select CPU_AMD_GEODE_LX
	select NORTHBRIDGE_AMD_LX
	select SOUTHBRIDGE_AMD_CS5536
	select SUPERIO_SMSC_SMSCSUPERIO
	select HAVE_PIRQ_TABLE
	select PIRQ_ROUTE
	select BOARD_ROMSIZE_KB_512
	select POWER_BUTTON_FORCE_ENABLE
	select PLL_MANUAL_CONFIG
	select CORE_GLIU_500_266

config MAINBOARD_DIR
	string
	default iei/pm-lx2-800-r10

config MAINBOARD_PART_NUMBER
	string
	default "PM-LX2-800-R10"

config IRQ_SLOT_COUNT
	int
	default 3

config PLLMSRlo
	hex
	default 0x07de0000

endif # BOARD_IEI_PM_LX2_800_R10
