##
## This file is part of the coreboot project.
##
## Copyright (C) 2018-2019 Eltan B.V.
##
## 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.
##

if BOARD_FACEBOOK_FBG1701

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	select BOARD_ROMSIZE_KB_8192
	select DISABLE_ACPI_HIBERNATE
	select HAVE_ACPI_TABLES
	select HAVE_IFD_BIN
	select HAVE_ME_BIN
	select HAVE_OPTION_TABLE
	select MAINBOARD_HAS_LPC_TPM
	select MAINBOARD_HAS_TPM2
	select SOC_INTEL_BRASWELL
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB
	select PCIEXP_L1_SUB_STATE
	select HAVE_FSP_BIN
	select CACHE_MRC_SETTINGS
	select DISABLE_HPET
	select INTEL_GMA_HAVE_VBT
	select GENERIC_SPD_BIN
	select USE_VENDORCODE_ELTAN

config ONBOARD_SAMSUNG_MEM
	bool "Onboard memory manufacturer Samsung"
	default n
	help
	  Samsung K4B8G1646D memory

config MAINBOARD_DIR
	string
	default "facebook/fbg1701"

config MAINBOARD_PART_NUMBER
	string
	default "FBG-1701"

config CBFS_SIZE
	hex
	default 0x00600000

config MRC_SETTINGS_CACHE_SIZE
	hex
	default 0x08000

config FSP_LOC
	hex
	default 0xfff9c000

config VENDORCODE_ELTAN_OEM_MANIFEST_LOC
	hex
	default 0xFFFE9000

config SPI_FLASH_INCLUDE_ALL_DRIVERS
	bool
	default n

config SPI_FLASH_WINBOND
	bool
	default y

config TPM_INIT
	bool "TPM Setup in RAMSTAGE"
	default n

config C_ENV_BOOTBLOCK_SIZE
	hex "C Bootblock Size"
	default 0x4000

config VENDORCODE_ELTAN_VBOOT_SIGNED_MANIFEST
	bool
	default y

config VENDORCODE_ELTAN_VBOOT_MANIFEST
	string
	default "mainboard/facebook/fbg1701/manifest.h"

config VENDORCODE_ELTAN_VBOOT_KEY_LOCATION
	hex
	default 0xFFFF9C00

config DRIVERS_INTEL_WIFI
	bool
	default n

endif # BOARD_FACEBOOK_FBG1701
