##
## This file is part of the coreboot project.
##
## Copyright (C) 2010 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; 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_ASUS_M2N_E

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_SOCKET_AM2
	select DIMM_DDR2
	select NORTHBRIDGE_AMD_AMDK8
	select SOUTHBRIDGE_NVIDIA_MCP55
	select HT_CHAIN_DISTRIBUTE
	select MCP55_USE_NIC
	select MCP55_USE_AZA
	select SUPERIO_ITE_IT8716F
	select SUPERIO_ITE_IT8716F_OVERRIDE_FANCTL
	select PARALLEL_CPU_INIT
	select HAVE_OPTION_TABLE
	select HAVE_MP_TABLE
	select LIFT_BSP_APIC_ID
	select BOARD_ROMSIZE_KB_512
	select K8_ALLOCATE_IO_RANGE

config MAINBOARD_DIR
	string
	default asus/m2n-e

config DCACHE_RAM_BASE
	hex
	default 0xc8000

config DCACHE_RAM_SIZE
	hex
	default 0x08000

config APIC_ID_OFFSET
	hex
	default 0x10

config MEM_TRAIN_SEQ
	int
	default 2

config MAINBOARD_PART_NUMBER
	string
	default "M2N-E"

config MAX_CPUS
	int
	default 2

config MAX_PHYSICAL_CPUS
	int
	default 1

config HT_CHAIN_UNITID_BASE
	hex
	default 0x0

config HT_CHAIN_END_UNITID_BASE
	hex
	default 0x20

endif # BOARD_ASUS_M2N_E
