# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>

if VENDOR_GOOGLE

config BIOSEMU
	bool
	select X86EMU_RAW_IO

config X86EMU_RAW_IO
	bool

choice
	prompt "Mainboard model"
	optional

config TARGET_CHROMEBOOK_CORAL
	bool "Chromebook coral"
	select BIOSEMU
	select EVENT
	help
	  This is a range of Intel-based laptops released in 2018. They use an
	  Intel Apollo Lake SoC. The design supports WiFi, 4GB to 16GB of
	  LPDDR4 1600MHz SDRAM, PCIe WiFi and Bluetooth, eMMC (typically 32GB),
	  up two cameras (front-facing 720p and another 5MP option), USB SD
	  reader, microphone and speakers. It also includes two USB 3 Type A and
	  two Type C ports. The latter are used as power input and can also
	  charge external devices as well as a 4K external display. There is a
	  Chrome OS EC connected on LPC, a Cr50 secure chip from Google and
	  various display options. OEMs products include Acer Chromebook 11
	  (e.g. C732, CB11, CP311) and Lenovo Chromebook (100e, 300e, 500e).

config TARGET_CHROMEBOOK_LINK
	bool "Chromebook link"
	select BIOSEMU
	help
	  This is the Chromebook Pixel released in 2013. It uses an Intel
	  i5 Ivybridge which is a die-shrink of Sandybridge, with 4GB of
	  SDRAM. It has a Panther Point platform controller hub, PCIe
	  WiFi and Bluetooth. It also includes a 720p webcam, USB SD
	  reader, microphone and speakers, display port and 32GB SATA
	  solid state drive. There is a Chrome OS EC connected on LPC,
	  and it provides a 2560x1700 high resolution touch-enabled LCD
	  display.

config TARGET_CHROMEBOOK_LINK64
	bool "Chromebook link 64-bit"
	select BIOSEMU
	help
	  This is the Chromebook Pixel released in 2013. With this config
	  U-Boot is built as a 64-bit binary. This allows testing while this
	  feature is being completed.

config TARGET_CHROMEBOX_PANTHER
	bool "Chromebox panther (not available)"
	select BIOSEMU
	help
	  Note: At present this must be used with coreboot. See README.x86
	  for instructions.

	  This is the Asus Chromebox CN60 released in 2014. It uses an Intel
	  Haswell Celeron 2955U Dual Core CPU with 2GB of SDRAM. It has a
	  Lynx Point platform controller hub, PCIe WiFi and Bluetooth. It also
	  includes a USB SD reader, four USB3 ports, display port and HDMI
	  video output and a 16GB SATA solid state drive. There is no Chrome
	  OS EC on this model.

config TARGET_CHROMEBOOK_SAMUS
	bool "Chromebook samus"
	help
	  This is the Chromebook Pixel released in 2015. It uses an Intel
	  Broadwell U Core i5 or Core i7 CPU with either 8GB or 16GB of
	  LPDDR3 SDRAM. It has PCIe WiFi and Bluetooth. It also includes a
	  720p webcam, USB SD reader, microphone and speakers, 2 USB 3 Type
	  C ports which can support charging and up to a 4K external display.
	  There is a solid state drive, either 32GB or 64GB. There is a
	  Chrome OS EC connected on LPC, and it provides a 2560x1700 high
	  resolution touch-enabled LCD display.

config TARGET_CHROMEBOOK_SAMUS_TPL
	bool "Chromebook samus booting from TPL"
	help
	  This is a version of Samus which boots into TPL, then to SPL and
	  U-Boot proper. This is useful where verified boot must select
	  between different A/B versions of SPL/U-Boot, to allow upgrading of
	  almost all U-Boot code in the field.

endchoice

source "board/google/chromebook_coral/Kconfig"
source "board/google/chromebook_link/Kconfig"
source "board/google/chromebox_panther/Kconfig"
source "board/google/chromebook_samus/Kconfig"

endif
