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

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_WINBOND_W83627EHG
	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-lx-800-r11

config MAINBOARD_PART_NUMBER
	string
	default "PM-LX-800-R11"

config IRQ_SLOT_COUNT
	int
	default 7

config PLLMSRlo
	hex
	default 0x07de0000

endif # BOARD_IEI_PM_LX_800_R11
