## SPDX-License-Identifier: GPL-2.0-only

config BOARD_INTEL_COFFEELAKE_RVP_COMMON
	def_bool n
	select DRIVERS_GENERIC_MAX98357A
	select DRIVERS_I2C_DA7219
	select DRIVERS_I2C_GENERIC
	select DRIVERS_I2C_HID
	select DRIVERS_I2C_MAX98373
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_CHROMEOS
	select MEMORY_MAPPED_TPM
	select MAINBOARD_USES_IFD_EC_REGION

config BOARD_INTEL_COFFEELAKE_RVP8
	select BOARD_INTEL_COFFEELAKE_RVP_COMMON
	select BOARD_ROMSIZE_KB_16384
	select MAINBOARD_USES_IFD_GBE_REGION
	select SOC_INTEL_CANNONLAKE_PCH_H
	select SOC_INTEL_COFFEELAKE
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB

config BOARD_INTEL_COFFEELAKE_RVP11
	select BOARD_INTEL_COFFEELAKE_RVP_COMMON
	select BOARD_ROMSIZE_KB_16384
	select MAINBOARD_USES_IFD_GBE_REGION
	select SOC_INTEL_CANNONLAKE_PCH_H
	select SOC_INTEL_COFFEELAKE
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB

config BOARD_INTEL_COFFEELAKE_RVPU
	select BOARD_INTEL_COFFEELAKE_RVP_COMMON
	select BOARD_ROMSIZE_KB_32768
	select SOC_INTEL_COFFEELAKE

config BOARD_INTEL_WHISKEYLAKE_RVP
	select BOARD_INTEL_COFFEELAKE_RVP_COMMON
	select BOARD_ROMSIZE_KB_16384
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB
	select SOC_INTEL_WHISKEYLAKE

config BOARD_INTEL_COMETLAKE_RVPU
	select BOARD_INTEL_COFFEELAKE_RVP_COMMON
	select BOARD_ROMSIZE_KB_16384
	select SOC_INTEL_COMETLAKE_1
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB

if BOARD_INTEL_COFFEELAKE_RVP_COMMON

config MAINBOARD_DIR
	default "intel/coffeelake_rvp"

config VARIANT_DIR
	default "cfl_u" if BOARD_INTEL_COFFEELAKE_RVPU
	default "cfl_h" if BOARD_INTEL_COFFEELAKE_RVP11
	default "whl_u" if BOARD_INTEL_WHISKEYLAKE_RVP
	default "cfl_s" if BOARD_INTEL_COFFEELAKE_RVP8
	default "cml_u" if BOARD_INTEL_COMETLAKE_RVPU

config MAINBOARD_PART_NUMBER
	default "whlrvp" if BOARD_INTEL_WHISKEYLAKE_RVP
	default "cmlrvp" if BOARD_INTEL_COMETLAKE_RVPU
	default "cflrvp"

config MAINBOARD_FAMILY
	string
	default "Intel_whlrvp" if BOARD_INTEL_WHISKEYLAKE_RVP
	default "Intel_cmlrvp" if BOARD_INTEL_COMETLAKE_RVPU
	default "Intel_cflrvp"

config CHROMEOS
	select GBB_FLAG_FORCE_MANUAL_RECOVERY

config MAX_CPUS
	int
	default 12 if BOARD_INTEL_COFFEELAKE_RVP11
	default 16 if BOARD_INTEL_COFFEELAKE_RVP8
	default 8

config UART_FOR_CONSOLE
	int
	default 2

config DEVICETREE
	default "variants/baseboard/devicetree.cb"

config OVERRIDE_DEVICETREE
	default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"

config FMDFILE
	depends on VBOOT
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if BOARD_ROMSIZE_KB_16384
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos_32MB.fmd" if BOARD_ROMSIZE_KB_32768

config INCLUDE_SND_MAX98357_DA7219_NHLT
	bool "Include blobs for audio with MAX98357_DA7219"
	select NHLT_DMIC_4CH_16B
	select NHLT_DMIC_2CH_16B
	select NHLT_DA7219
	select NHLT_MAX98357

config INCLUDE_SND_MAX98373_NHLT
	bool "Include blobs for audio with MAX98373"
	select NHLT_DMIC_4CH_16B
	select NHLT_DMIC_2CH_16B
	select NHLT_MAX98373

config DIMM_SPD_SIZE
	default 512

config VBOOT
	select VBOOT_LID_SWITCH
	select VBOOT_MOCK_SECDATA
endif
