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

choice
	prompt "Mainboard model"

config BOARD_ASUS_A8N_E
	bool "A8N-E"
config BOARD_ASUS_A8V_E_SE
	bool "A8V-E SE"
config BOARD_ASUS_A8V_E_DELUXE
	bool "A8V-E Deluxe"
config BOARD_ASUS_F2A85_M
	bool "F2A85-M"
config BOARD_ASUS_K8V_X
	bool "K8V-X"
config BOARD_ASUS_M2N_E
	bool "M2N-E"
config BOARD_ASUS_M2V
	bool "M2V"
config BOARD_ASUS_M2V_MX_SE
	bool "M2V-MX SE"
config BOARD_ASUS_M4A785M
	bool "M4A785-M"
config BOARD_ASUS_M4A785TM
	bool "M4A785T-M"
config BOARD_ASUS_M4A78_EM
	bool "M4A78-EM"
config BOARD_ASUS_M5A88_V
	bool "M5A88-V"
config BOARD_ASUS_MEW_AM
	bool "MEW-AM"
config BOARD_ASUS_MEW_VM
	bool "MEW-VM"
config BOARD_ASUS_P2B
	bool "P2B"
config BOARD_ASUS_P2B_D
	bool "P2B-D"
config BOARD_ASUS_P2B_DS
	bool "P2B-DS"
config BOARD_ASUS_P2B_F
	bool "P2B-F"
config BOARD_ASUS_P2B_LS
	bool "P2B-LS"
config BOARD_ASUS_P3B_F
	bool "P3B-F"
config BOARD_ASUS_DSBF
	bool "DSBF"
endchoice

source "src/mainboard/asus/a8n_e/Kconfig"
source "src/mainboard/asus/a8v-e_se/Kconfig"
source "src/mainboard/asus/a8v-e_deluxe/Kconfig"
source "src/mainboard/asus/f2a85-m/Kconfig"
source "src/mainboard/asus/k8v-x/Kconfig"
source "src/mainboard/asus/m2n-e/Kconfig"
source "src/mainboard/asus/m2v/Kconfig"
source "src/mainboard/asus/m2v-mx_se/Kconfig"
source "src/mainboard/asus/m4a785-m/Kconfig"
source "src/mainboard/asus/m4a785t-m/Kconfig"
source "src/mainboard/asus/m4a78-em/Kconfig"
source "src/mainboard/asus/m5a88-v/Kconfig"
source "src/mainboard/asus/mew-am/Kconfig"
source "src/mainboard/asus/mew-vm/Kconfig"
source "src/mainboard/asus/p2b/Kconfig"
source "src/mainboard/asus/p2b-d/Kconfig"
source "src/mainboard/asus/p2b-ds/Kconfig"
source "src/mainboard/asus/p2b-f/Kconfig"
source "src/mainboard/asus/p2b-ls/Kconfig"
source "src/mainboard/asus/p3b-f/Kconfig"
source "src/mainboard/asus/dsbf/Kconfig"

config MAINBOARD_VENDOR
	string
	default "ASUS"

endif # VENDOR_ASUS
