##
## This file is part of the coreboot project.
##
## Copyright (C) 2009 coresystems GmbH
##
## 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
##

config BOARD_INTEL_D945GCLF
	bool "D945GCLF"
	select ARCH_X86
	select CPU_INTEL_CORE
	select CPU_INTEL_SOCKET_441
	select NORTHBRIDGE_INTEL_I945
	select SOUTHBRIDGE_INTEL_I82801GX
	select SUPERIO_SMSC_LPC47M15X
	select HAVE_PIRQ_TABLE
	select HAVE_MP_TABLE
	select HAVE_ACPI_TABLES
	select MMCONF_SUPPORT
	select USE_PRINTK_IN_CAR
	select AP_IN_SIPI_WAIT
	select UDELAY_LAPIC
	select HAVE_ACPI_TABLES
	select HAVE_SMI_HANDLER
	select BOARD_ROMSIZE_KB_512

config MAINBOARD_DIR
	string
	default intel/d945gclf
	depends on BOARD_INTEL_D945GCLF

config DCACHE_RAM_BASE
	hex
	default 0xffdf8000
	depends on BOARD_INTEL_D945GCLF

config DCACHE_RAM_SIZE
	hex
	default 0x8000
	depends on BOARD_INTEL_D945GCLF

config LB_CKS_RANGE_END
	int
	default 122
	depends on BOARD_INTEL_D945GCLF

config LB_CKS_LOC
	int
	default 123
	depends on BOARD_INTEL_D945GCLF

config MAINBOARD_PART_NUMBER
	string
	default "D945GCLF"
	depends on BOARD_INTEL_D945GCLF

config MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID
	hex
	default 0x464C
	depends on BOARD_INTEL_D945GCLF

config MMCONF_BASE_ADDRESS
	hex
	default 0xf0000000
	depends on BOARD_INTEL_D945GCLF

config IRQ_SLOT_COUNT
	int
	default 18
	depends on BOARD_INTEL_D945GCLF

config MAX_CPUS
	int
	default 4
	depends on BOARD_INTEL_D945GCLF

config MAX_PHYSICAL_CPUS
	int
	default 2
	depends on BOARD_INTEL_D945GCLF

config HAVE_INIT_TIMER
	bool
	default n
	depends on BOARD_INTEL_D945GCLF
