##
## This file is part of the coreboot project.
##
## Copyright (C) 2009 Cristi Măgherușan <cristi.magherusan@net.utcluj.ro>
##
## 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.
##
if BOARD_ASUS_M2V_MX_SE

config BOARD_SPECIFIC_OPTIONS # dummy
	def_bool y
	select CPU_AMD_SOCKET_AM2
	select DIMM_DDR2
	select QRANK_DIMM_SUPPORT
	select NORTHBRIDGE_AMD_AMDK8
	select SOUTHBRIDGE_VIA_VT8237R
	select SOUTHBRIDGE_VIA_K8T890
	select SOUTHBRIDGE_VIA_SUBTYPE_K8M890
	select SUPERIO_ITE_IT8712F
	select HAVE_OPTION_TABLE
	select HAVE_ACPI_TABLES
	select BOARD_ROMSIZE_KB_512
	select VGA
	select HAVE_ACPI_RESUME
	select SET_FIDVID

config MAINBOARD_DIR
	string
	default asus/m2v-mx_se

config DCACHE_RAM_BASE
	hex
	default 0xcc000

config DCACHE_RAM_SIZE
	hex
	default 0x4000

config APIC_ID_OFFSET
	hex
	default 0x10

config MAINBOARD_PART_NUMBER
	string
	default "M2V-MX SE"

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_M2V_MX_SE
