#
# 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 SCSI_AHCI
	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
