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

config INTEL_QUEENSBAY
	bool
	select HAVE_FSP
	select HAVE_CMC
	select ARCH_EARLY_INIT_R
	imply AHCI_PCI
	imply ICH_SPI
	imply INTEL_ICH6_GPIO
	imply MMC
	imply MMC_PCI
	imply MMC_SDHCI
	imply MMC_SDHCI_SDMA
	imply PCH_GBE
	imply SCSI
	imply SPI_FLASH
	imply SYS_NS16550
	imply USB
	imply USB_EHCI_HCD
	imply VIDEO_VESA

if INTEL_QUEENSBAY

config HAVE_CMC
	bool "Add a Chipset Micro Code state machine binary"
	help
	  Select this option to add a Chipset Micro Code state machine binary
	  to the resulting U-Boot image. It is a 64K data block of machine
	  specific code which must be put in the flash for the processor to
	  access when powered up before system BIOS is executed.

config CMC_FILE
	string "Chipset Micro Code state machine filename"
	depends on HAVE_CMC
	default "cmc.bin"
	help
	  The filename of the file to use as Chipset Micro Code state machine
	  binary in the board directory.

config CMC_ADDR
	hex "Chipset Micro Code state machine binary location"
	depends on HAVE_CMC
	default 0xfffb0000
	help
	  The location of the CMC binary is determined by a strap. It must be
	  put in flash at a location matching the strap-determined base address.

	  The default base address of 0xfffb0000 indicates that the binary must
	  be located at offset 0xb0000 from the beginning of a 1MB flash device.

config CPU_ADDR_BITS
	int
	default 32

config DISABLE_IGD
	bool "Disable Integrated Graphics Device (IGD)"
	help
	  Disable the Integrated Graphics Device (IGD) so that it does not
	  show in the PCI configuration space as a VGA disaplay controller.
	  This gives a chance for U-Boot to run PCI/PCIe based graphics
	  card's VGA BIOS and use that card for the graphics console.

endif
