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

if VENDOR_INTEL

choice
	prompt "Mainboard model"
	optional

config TARGET_BAYLEYBAY
	bool "Bayley Bay"
	help
	  This is the Intel Bayley Bay Customer Reference Board. It contains an
	  Intel quad-core Atom Processor E3800 with dual-channel DDR3L SODIMM
	  4GB memory, HDMI/DP/VGA display, HD audio, SATA, USB2, USB3, SD, eMMC,
	  PCIe and some other sensor interfaces.

config TARGET_CROWNBAY
	bool "Crown Bay"
	help
	  This is the Intel Crown Bay Customer Reference Board. It contains
	  the Intel Atom Processor E6xx populated on the COM Express module
	  with 1GB DDR2 soldered down memory and a carrier board with the
	  Intel Platform Controller Hub EG20T, other system components and
	  peripheral connectors for PCIe/SATA/USB/LAN/SD/UART/Audio/LVDS.

config TARGET_GALILEO
	bool "Galileo"
	help
	  This is the Intel Galileo board, which is the first in a family of
	  Arduino-certified development and prototyping boards based on Intel
	  architecture. It includes an Intel Quark SoC X1000 processor, a 32-bit
	  single-core, single-thread, Intel Pentium processor instrunction set
	  architecture (ISA) compatible, operating at speeds up to 400Mhz,
	  along with 256MB DDR3 memory. It supports a wide range of industry
	  standard I/O interfaces, including a full-sized mini-PCIe slot,
	  one 100Mb Ethernet port, a microSD card slot, a USB host port and
	  a USB client port.

config TARGET_MINNOWMAX
	bool "Minnowboard MAX"
	help
	  This is the Intel Minnowboard MAX. It contains an Atom E3800
	  processor in a small form factor with Ethernet, micro-SD, USB 2,
	  USB 3, SATA, serial console, some GPIOs and HDMI 1.3 video out.
	  It requires some binary blobs - see README.x86 for details.

	  Note that PCIE_ECAM_BASE is set up by the FSP so the value used
	  by U-Boot matches that value.

endchoice

source "board/intel/bayleybay/Kconfig"
source "board/intel/crownbay/Kconfig"
source "board/intel/galileo/Kconfig"
source "board/intel/minnowmax/Kconfig"

endif
