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

choice
	prompt "Mainboard model"

config BOARD_MSI_MS_6119
	bool "MS-6119"
config BOARD_MSI_MS_6147
	bool "MS-6147"
config BOARD_MSI_MS_6156
	bool "MS-6156"
config BOARD_MSI_MS_6178
	bool "MS-6178"
config BOARD_MSI_MS7135
	bool "MS-7135 (K8N Neo3)"
config BOARD_MSI_MS7260
	bool "MS-7260 (K9N Neo)"
config BOARD_MSI_MS9185
	bool "MS-9185 (K9SD Master-S2R)"
config BOARD_MSI_MS9282
	bool "MS-9282 (K9SD Master)"
config BOARD_MSI_MS9652_FAM10
	bool "MS-9652 Fam10 (Speedster K9ND)"

endchoice

source "src/mainboard/msi/ms6119/Kconfig"
source "src/mainboard/msi/ms6147/Kconfig"
source "src/mainboard/msi/ms6156/Kconfig"
source "src/mainboard/msi/ms6178/Kconfig"
source "src/mainboard/msi/ms7135/Kconfig"
source "src/mainboard/msi/ms7260/Kconfig"
source "src/mainboard/msi/ms9185/Kconfig"
source "src/mainboard/msi/ms9282/Kconfig"
source "src/mainboard/msi/ms9652_fam10/Kconfig"

config MAINBOARD_VENDOR
	string
	default "MSI"

endif # VENDOR_MSI
