##
## This file is part of the coreboot project.
##
## Copyright (C) 2012 The ChromiumOS Authors
##
## 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_GOOGLE

# Auto select common options
config VENDOR_SPECIFIC_OPTIONS
	def_bool y
	select CACHE_ROM

choice
	prompt "Mainboard model"

config BOARD_GOOGLE_BELTINO
	bool "Beltino"
config BOARD_GOOGLE_BOLT
	bool "Bolt"
config BOARD_GOOGLE_BUTTERFLY
	bool "Butterfly"
config BOARD_GOOGLE_FALCO
	bool "Falco"
config BOARD_GOOGLE_KIRBY
	bool "Kirby"
config BOARD_GOOGLE_LINK
	bool "Link"
config BOARD_GOOGLE_NYAN
	bool "Nyan"
config BOARD_GOOGLE_PARROT
	bool "Parrot"
config BOARD_GOOGLE_PEPPY
	bool "Peppy"
config BOARD_GOOGLE_PIT
	bool "Pit"
config BOARD_GOOGLE_RAMBI
	bool "Rambi"
config BOARD_GOOGLE_SAMUS
	bool "Samus"
config BOARD_GOOGLE_SLIPPY
	bool "Slippy"
config BOARD_GOOGLE_SNOW
	bool "Snow"
config BOARD_GOOGLE_STOUT
	bool "Stout"

endchoice

source "src/mainboard/google/beltino/Kconfig"
source "src/mainboard/google/bolt/Kconfig"
source "src/mainboard/google/butterfly/Kconfig"
source "src/mainboard/google/falco/Kconfig"
source "src/mainboard/google/kirby/Kconfig"
source "src/mainboard/google/link/Kconfig"
source "src/mainboard/google/nyan/Kconfig"
source "src/mainboard/google/parrot/Kconfig"
source "src/mainboard/google/peppy/Kconfig"
source "src/mainboard/google/pit/Kconfig"
source "src/mainboard/google/rambi/Kconfig"
source "src/mainboard/google/samus/Kconfig"
source "src/mainboard/google/slippy/Kconfig"
source "src/mainboard/google/snow/Kconfig"
source "src/mainboard/google/stout/Kconfig"

config MAINBOARD_VENDOR
	string "Mainboard Vendor"
	default "GOOGLE"

endif # VENDOR_GOOGLE
