##
## 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_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/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
