##
## 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_DAISY
	bool "Daisy"
config BOARD_GOOGLE_FALCO
	bool "Falco"
config BOARD_GOOGLE_LINK
	bool "Link"
config BOARD_GOOGLE_NYAN
	bool "Nyan"
config BOARD_GOOGLE_NYAN_BIG
	bool "Nyan Big"
config BOARD_GOOGLE_NYAN_BLAZE
	bool "Nyan Blaze"
config BOARD_GOOGLE_PANTHER
	bool "Panther"
config BOARD_GOOGLE_PARROT
	bool "Parrot"
config BOARD_GOOGLE_PEACH_PIT
	bool "Peach Pit"
config BOARD_GOOGLE_PEPPY
	bool "Peppy"
config BOARD_GOOGLE_RAMBI
	bool "Rambi"
config BOARD_GOOGLE_RUSH
	bool "Rush"
config BOARD_GOOGLE_SAMUS
	bool "Samus"
config BOARD_GOOGLE_SLIPPY
	bool "Slippy"
config BOARD_GOOGLE_STORM
	bool "Storm"
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/daisy/Kconfig"
source "src/mainboard/google/falco/Kconfig"
source "src/mainboard/google/link/Kconfig"
source "src/mainboard/google/nyan/Kconfig"
source "src/mainboard/google/nyan_big/Kconfig"
source "src/mainboard/google/nyan_blaze/Kconfig"
source "src/mainboard/google/panther/Kconfig"
source "src/mainboard/google/parrot/Kconfig"
source "src/mainboard/google/peach_pit/Kconfig"
source "src/mainboard/google/peppy/Kconfig"
source "src/mainboard/google/rambi/Kconfig"
source "src/mainboard/google/rush/Kconfig"
source "src/mainboard/google/samus/Kconfig"
source "src/mainboard/google/slippy/Kconfig"
source "src/mainboard/google/storm/Kconfig"
source "src/mainboard/google/stout/Kconfig"

config MAINBOARD_VENDOR
	string "Mainboard Vendor"
	default "GOOGLE"

endif # VENDOR_GOOGLE
