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

config ACPI_FNKEY_GEN_SCANCODE
	default 94 if BOARD_GOOGLE_XOL

config BOARD_GOOGLE_BRYA_COMMON
	def_bool n
	select DRIVERS_GENERIC_ALC1015
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENERIC_MAX98357A
	select DRIVERS_I2C_GENERIC
	select DRIVERS_I2C_HID
	select DRIVERS_I2C_NAU8825
	select DRIVERS_I2C_RT5645
	select DRIVERS_INTEL_DPTF
	select DRIVERS_INTEL_DPTF_SUPPORTS_TPCH
	select DRIVERS_INTEL_PMC
	select DRIVERS_INTEL_SOUNDWIRE
	select DRIVERS_INTEL_USB4_RETIMER
	select DRIVERS_SOUNDWIRE_ALC5682
	select DRIVERS_SOUNDWIRE_MAX98373
	select DRIVERS_SPI_ACPI
	select DRIVERS_WIFI_GENERIC
	select DRIVERS_WWAN_FM350GL
	select EC_GOOGLE_CHROMEEC
	select EC_GOOGLE_CHROMEEC_BOARDID
	select EC_GOOGLE_CHROMEEC_ESPI
	select EC_GOOGLE_CHROMEEC_SKUID
	select EDK2_UFS_ENABLE if EDK2_REPO_MRCHROMEBOX
	select ENABLE_TCSS_USB_DETECTION if !CHROMEOS
	select FW_CONFIG
	select FW_CONFIG_SOURCE_CHROMEEC_CBI
	select GOOGLE_SMBIOS_MAINBOARD_VERSION
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select HAVE_FSP_LOGO_SUPPORT if RUN_FSP_GOP
	select I2C_TPM
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_CHROMEOS
	select MAINBOARD_HAS_TPM2
	select PMC_IPC_ACPI_INTERFACE
	select SOC_INTEL_COMMON_BLOCK_PCIE_RTD3
	select SOC_INTEL_CSE_LITE_SKU
	select SOC_INTEL_CSE_SEND_EOP_ASYNC
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES if SOC_INTEL_ALDERLAKE_PCH_P
	select SOC_INTEL_COMMON_BASECODE_DEBUG_FEATURE
	select SOC_INTEL_CRASHLOG
	select SOC_INTEL_CSE_PRE_CPU_RESET_TELEMETRY_V1
	select SOC_INTEL_STORE_ISH_FW_VERSION if DRIVERS_INTEL_ISH

config BOARD_GOOGLE_BASEBOARD_BRYA
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_AUDIO_SOF
	select DRIVERS_GFX_GENERIC
	select HAVE_SLP_S0_GATE
	select MEMORY_SOLDERDOWN if !BOARD_GOOGLE_BANSHEE
	select SOC_INTEL_ALDERLAKE_PCH_P
	select SYSTEM_TYPE_LAPTOP
	select TPM_GOOGLE_CR50

config BOARD_GOOGLE_BASEBOARD_BRASK
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_32768
	select CR50_RESET_CLEAR_EC_AP_IDLE_FLAG
	select ENABLE_TCSS_DISPLAY_DETECTION if RUN_FSP_GOP
	select HAVE_SLP_S0_GATE
	select MEMORY_SODIMM if !BOARD_GOOGLE_CONSTITUTION
	select RT8168_GEN_ACPI_POWER_RESOURCE
	select RT8168_GET_MAC_FROM_VPD
	select RT8168_SET_LED_MODE
	select SOC_INTEL_ALDERLAKE_PCH_P
	select TPM_GOOGLE_CR50

config BOARD_GOOGLE_BASEBOARD_HADES
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_32768
	select DUMP_SMBIOS_TYPE17
	select HAVE_SLP_S0_GATE
	select INCLUDE_NVIDIA_GPU_ASL
	select MEMORY_SODIMM
	select PCIEXP_SUPPORT_RESIZABLE_BARS
	select SOC_INTEL_ALDERLAKE_PCH_P
	select SOC_INTEL_RAPTORLAKE
	select SYSTEM_TYPE_LAPTOP
	select TPM_GOOGLE_CR50

config BOARD_GOOGLE_BASEBOARD_NISSA
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_16384 if !BOARD_ROMSIZE_KB_32768
	select CHROMEOS_DRAM_PART_NUMBER_IN_CBI if CHROMEOS
	select DRIVERS_AUDIO_SOF
	select DRIVERS_INTEL_ISH
	select MAINBOARD_DISABLE_STAGE_CACHE
	select MEMORY_SOLDERDOWN
	select SOC_INTEL_ALDERLAKE_PCH_N
	select SOC_INTEL_CSE_LITE_COMPRESS_ME_RW
	select SOC_INTEL_CSE_LITE_SYNC_IN_RAMSTAGE
	select SYSTEM_TYPE_LAPTOP
	select TPM_GOOGLE_TI50
	select SOC_INTEL_COMMON_MMC_OVERRIDE

config BOARD_GOOGLE_BASEBOARD_TRULO
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_16384 if !BOARD_ROMSIZE_KB_32768
	select CHROMEOS_DRAM_PART_NUMBER_IN_CBI if CHROMEOS
	select DRIVERS_AUDIO_SOF
	select DRIVERS_INTEL_ISH
	select MAINBOARD_DISABLE_STAGE_CACHE
	select MEMORY_SOLDERDOWN
	select SOC_INTEL_COMMON_MMC_OVERRIDE
	select SOC_INTEL_CSE_LITE_COMPRESS_ME_RW
	select SOC_INTEL_CSE_LITE_SYNC_IN_RAMSTAGE
	select SOC_INTEL_TWINLAKE
	select SYSTEM_TYPE_LAPTOP
	select TPM_GOOGLE_TI50

config BOARD_GOOGLE_AGAH
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENESYSLOGIC_GL9750
	select INCLUDE_NVIDIA_GPU_ASL
	select PCIEXP_SUPPORT_RESIZABLE_BARS
	select RT8168_GEN_ACPI_POWER_RESOURCE
	select RT8168_GET_MAC_FROM_VPD
	select RT8168_SET_LED_MODE
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_ANAHERA
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENESYSLOGIC_GL9763E
	select DRIVERS_GENESYSLOGIC_GL9750
	select HAVE_PCIE_WWAN
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_ANAHERA4ES
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DEFAULT_ADL_NEM
	select DRIVERS_GENESYSLOGIC_GL9763E
	select DRIVERS_GENESYSLOGIC_GL9750
	select HAVE_PCIE_WWAN
	select HAVE_WWAN_POWER_SEQUENCE

config BOARD_GOOGLE_ANRAGGAR
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select BOARD_ROMSIZE_KB_16384
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GFX_GENERIC
	select DRIVERS_INTEL_MIPI_CAMERA
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT
	select CHROMEOS_WIFI_SAR if CHROMEOS

config BOARD_GOOGLE_AURASH
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_BANSHEE
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_GPIO_KEYS
	select INTEL_GMA_HAVE_VBT
	select MEMORY_SODIMM

config BOARD_GOOGLE_BRASK
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select DRIVERS_GENESYSLOGIC_GL9755
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_CRASHLOG

config BOARD_GOOGLE_BRYA0
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENERIC_NAU8315
	select DRIVERS_GENESYSLOGIC_GL9755
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select DRIVERS_INTEL_MIPI_CAMERA
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_CRASHLOG
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_BUJIA
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_CRAASK
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_CRAASKOV
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS

config BOARD_GOOGLE_CONSTITUTION
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select MEMORY_SOLDERDOWN
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_CROTA
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_CS42L42
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_DOCHI
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_INTEL_ISH
	select SOC_INTEL_RAPTORLAKE
	select USE_UNIFIED_AP_FIRMWARE_FOR_UFS_AND_NON_UFS

config BOARD_GOOGLE_FELWINTER
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9755
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_GAELIN
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_GIMBLE
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_MAX98390
	select GOOGLE_DSM_CALIB if VPD
	select GOOGLE_DSM_PARAM_FILE_NAME if VPD
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_GIMBLE4ES
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DEFAULT_ADL_NEM
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_MAX98390
	select GOOGLE_DSM_CALIB if VPD
	select GOOGLE_DSM_PARAM_FILE_NAME if VPD

config BOARD_GOOGLE_GLADIOS
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9763E
	select DRIVERS_GENESYSLOGIC_GL9750
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_GLASSWAY
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select CHROMEOS_WIFI_SAR if CHROMEOS

config BOARD_GOOGLE_GOTHRAX
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select HAVE_WWAN_POWER_SEQUENCE

config BOARD_GOOGLE_HADES
	select BOARD_GOOGLE_BASEBOARD_HADES
	select DRIVERS_GENESYSLOGIC_GL9755
	select RT8168_GEN_ACPI_POWER_RESOURCE
	select RT8168_GET_MAC_FROM_VPD
	select RT8168_SET_LED_MODE

config BOARD_GOOGLE_KANO
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_I2C_MAX98373
	select DRIVERS_I2C_NAU8825
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_KINOX
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_KULDAX
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9755
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_JOXER
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9750
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_LISBON
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENESYSLOGIC_GL9763E
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_MARASOV
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_INTEL_ISH
	select SOC_INTEL_RAPTORLAKE
	select USE_UNIFIED_AP_FIRMWARE_FOR_UFS_AND_NON_UFS

config BOARD_GOOGLE_MITHRAX
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9755
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_MOLI
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_NIVVIKS
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select DRIVERS_INTEL_MIPI_CAMERA
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_NEREID
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENERIC_GPIO_KEYS
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_NOKRIS
	select BOARD_GOOGLE_BASEBOARD_NISSA

config BOARD_GOOGLE_NOVA
	select BOARD_GOOGLE_BASEBOARD_BRASK
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_OMNIGUL
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_INTEL_ISH
	select SOC_INTEL_RAPTORLAKE
	select USE_UNIFIED_AP_FIRMWARE_FOR_UFS_AND_NON_UFS

config BOARD_GOOGLE_OSIRIS
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select INTEL_GMA_HAVE_VBT
	select RT8168_GEN_ACPI_POWER_RESOURCE
	select RT8168_GET_MAC_FROM_VPD
	select RT8168_SET_LED_MODE
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_PIRRHA
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_I2C_DA7219

config BOARD_GOOGLE_PRIMUS
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENESYSLOGIC_GL9755
	select HAVE_PCIE_WWAN
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_PUJJO
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select DRIVERS_WWAN_FM350GL
	select HAVE_PCIE_WWAN
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_SUNDANCE
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_GENERIC_GPIO_KEYS

config BOARD_GOOGLE_PUJJOGA
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_GENERIC_GPIO_KEYS

config BOARD_GOOGLE_QUANDISO
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_I2C_SX9324
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_REDRIX
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENESYSLOGIC_GL9755
	select DRIVERS_I2C_MAX98390
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select GOOGLE_DSM_CALIB if VPD
	select GOOGLE_DSM_PARAM_FILE_NAME if VPD
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_COMMON_BLOCK_IPU

config BOARD_GOOGLE_REDRIX4ES
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DEFAULT_ADL_NEM
	select DRIVERS_GENESYSLOGIC_GL9755
	select DRIVERS_I2C_MAX98390
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select GOOGLE_DSM_CALIB if VPD
	select GOOGLE_DSM_PARAM_FILE_NAME if VPD
	select SOC_INTEL_COMMON_BLOCK_IPU

config BOARD_GOOGLE_SKOLAS
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_GENERIC_NAU8315
	select DRIVERS_GENESYSLOGIC_GL9755
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_SKOLAS4ES
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DEFAULT_ADL_NEM
	select DRIVERS_GENESYSLOGIC_GL9755
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_TAEKO
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENESYSLOGIC_GL9763E
	select DRIVERS_GENESYSLOGIC_GL9763E_L1_MAX if DRIVERS_GENESYSLOGIC_GL9763E
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_RAPTORLAKE

config BOARD_GOOGLE_TAEKO4ES
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DEFAULT_ADL_NEM
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENESYSLOGIC_GL9763E

config BOARD_GOOGLE_TANIKS
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_BAYHUB_LV2
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENESYSLOGIC_GL9763E
	select DRIVERS_GENESYSLOGIC_GL9763E_L1_MAX
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_TIVVIKS
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_I2C_SX9324
	select DRIVERS_I2C_SX9324_SUPPORT_LEGACY_LINUX_DRIVER
	select DRIVERS_INTEL_MIPI_CAMERA
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT
	select SOC_INTEL_TWINLAKE

config BOARD_GOOGLE_TRULO
	select BOARD_GOOGLE_BASEBOARD_TRULO

config BOARD_GOOGLE_ULDREN
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_I2C_CS42L42
	select HAVE_WWAN_POWER_SEQUENCE

config BOARD_GOOGLE_VELL
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_I2C_CS35L53
	select SOC_INTEL_COMMON_BLOCK_IPU

config BOARD_GOOGLE_VOLMAR
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select DRIVERS_I2C_MAX98373
	select DRIVERS_I2C_NAU8825
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_XIVU
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_INTEL_MIPI_CAMERA
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_XOL
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select DRIVERS_I2C_DA7219
	select DRIVERS_INTEL_ISH
	select SOC_INTEL_RAPTORLAKE
	select USE_UNIFIED_AP_FIRMWARE_FOR_UFS_AND_NON_UFS

config BOARD_GOOGLE_YAVIKS
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENESYSLOGIC_GL9750
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_MTK_WIFI
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT
	select USE_MTCL

config BOARD_GOOGLE_YAVILLA
	select BOARD_GOOGLE_BASEBOARD_NISSA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT

config BOARD_GOOGLE_YAVISTA
	select BOARD_GOOGLE_BASEBOARD_NISSA

config BOARD_GOOGLE_ZYDRON
	select BOARD_GOOGLE_BASEBOARD_BRYA
	select CHROMEOS_WIFI_SAR if CHROMEOS
	select DEFAULT_ADL_NEM
	select DRIVERS_I2C_MAX98373
	select DRIVERS_I2C_NAU8825
	select DRIVERS_INTEL_MIPI_CAMERA
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG
	select SOC_INTEL_COMMON_BLOCK_IPU
	select SOC_INTEL_RAPTORLAKE

if BOARD_GOOGLE_BRYA_COMMON

config BASEBOARD_DIR
	string
	default "brya" if BOARD_GOOGLE_BASEBOARD_BRYA
	default "brask" if BOARD_GOOGLE_BASEBOARD_BRASK
	default "hades" if BOARD_GOOGLE_BASEBOARD_HADES
	default "nissa" if BOARD_GOOGLE_BASEBOARD_NISSA
	default "trulo" if BOARD_GOOGLE_BASEBOARD_TRULO

config CHROMEOS
	select EC_GOOGLE_CHROMEEC_SWITCHES
	select HAS_RECOVERY_MRC_CACHE

config CHROMEOS_WIFI_SAR
	bool "Enable SAR options for ChromeOS build"
	depends on CHROMEOS
	select DSAR_ENABLE
	select GEO_SAR_ENABLE
	select SAR_ENABLE
	select USE_SAR

config DEVICETREE
	default "variants/baseboard/\$(CONFIG_BASEBOARD_DIR)/devicetree.cb"

config DRIVER_TPM_I2C_BUS
	hex
	default 0x3 if BOARD_GOOGLE_AGAH
	default 0x1 if BOARD_GOOGLE_ANAHERA
	default 0x3 if BOARD_GOOGLE_ANAHERA4ES
	default 0x0 if BOARD_GOOGLE_ANRAGGAR
	default 0x1 if BOARD_GOOGLE_AURASH
	default 0x1 if BOARD_GOOGLE_BANSHEE
	default 0x1 if BOARD_GOOGLE_BRASK
	default 0x1 if BOARD_GOOGLE_BRYA0
	default 0x1 if BOARD_GOOGLE_BUJIA
	default 0x1 if BOARD_GOOGLE_CONSTITUTION
	default 0x0 if BOARD_GOOGLE_CRAASK
	default 0x0 if BOARD_GOOGLE_CRAASKOV
	default 0x1 if BOARD_GOOGLE_CROTA
	default 0x1 if BOARD_GOOGLE_DOCHI
	default 0x1 if BOARD_GOOGLE_FELWINTER
	default 0x1 if BOARD_GOOGLE_GAELIN
	default 0x1 if BOARD_GOOGLE_GIMBLE
	default 0x3 if BOARD_GOOGLE_GIMBLE4ES
	default 0x1 if BOARD_GOOGLE_GLADIOS
	default 0x0 if BOARD_GOOGLE_GLASSWAY
	default 0x0 if BOARD_GOOGLE_GOTHRAX
	default 0x3 if BOARD_GOOGLE_HADES
	default 0x0 if BOARD_GOOGLE_JOXER
	default 0x1 if BOARD_GOOGLE_KANO
	default 0x1 if BOARD_GOOGLE_KINOX
	default 0x1 if BOARD_GOOGLE_KULDAX
	default 0x1 if BOARD_GOOGLE_LISBON
	default 0x1 if BOARD_GOOGLE_MARASOV
	default 0x1 if BOARD_GOOGLE_MITHRAX
	default 0x1 if BOARD_GOOGLE_MOLI
	default 0x0 if BOARD_GOOGLE_NEREID
	default 0x0 if BOARD_GOOGLE_NIVVIKS
	default 0x1 if BOARD_GOOGLE_NOVA
	default 0x1 if BOARD_GOOGLE_OMNIGUL
	default 0x1 if BOARD_GOOGLE_OSIRIS
	default 0x0 if BOARD_GOOGLE_PIRRHA
	default 0x1 if BOARD_GOOGLE_PRIMUS
	default 0x0 if BOARD_GOOGLE_PUJJO
	default 0x0 if BOARD_GOOGLE_QUANDISO
	default 0x1 if BOARD_GOOGLE_REDRIX
	default 0x3 if BOARD_GOOGLE_REDRIX4ES
	default 0x1 if BOARD_GOOGLE_SKOLAS
	default 0x1 if BOARD_GOOGLE_SKOLAS4ES
	default 0x1 if BOARD_GOOGLE_TAEKO
	default 0x3 if BOARD_GOOGLE_TAEKO4ES
	default 0x1 if BOARD_GOOGLE_TANIKS
	default 0x0 if BOARD_GOOGLE_TIVVIKS
	default 0x0 if BOARD_GOOGLE_TRULO
	default 0x0 if BOARD_GOOGLE_ULDREN
	default 0x1 if BOARD_GOOGLE_VELL
	default 0x1 if BOARD_GOOGLE_VOLMAR
	default 0x0 if BOARD_GOOGLE_XIVU
	default 0x1 if BOARD_GOOGLE_XOL
	default 0x0 if BOARD_GOOGLE_YAVIKS
	default 0x0 if BOARD_GOOGLE_YAVILLA
	default 0x1 if BOARD_GOOGLE_ZYDRON

config DRIVER_TPM_I2C_ADDR
	hex
	default 0x50

config FMDFILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-serger.fmd" if CHROMEOS && BOARD_GOOGLE_BRASK
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-16MiB-debugfsp.fmd" if CHROMEOS && (BOARD_GOOGLE_BASEBOARD_NISSA || BOARD_GOOGLE_BASEBOARD_TRULO) && BOARD_ROMSIZE_KB_16384 && BUILDING_WITH_DEBUG_FSP
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-16MiB.fmd" if CHROMEOS && (BOARD_GOOGLE_BASEBOARD_NISSA || BOARD_GOOGLE_BASEBOARD_TRULO) && BOARD_ROMSIZE_KB_16384
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS

config TPM_TIS_ACPI_INTERRUPT
	int
	default 13 if !BOARD_GOOGLE_BASEBOARD_HADES # GPE0_DW0_13 (GPP_A13_IRQ)
	default 20 if BOARD_GOOGLE_BASEBOARD_HADES # GPE0_DW0_20 (GPP_A20_IRQ)

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

config MAINBOARD_DIR
	default "google/brya"

config MAINBOARD_FAMILY
	string
	default "Google_Brya" if BOARD_GOOGLE_BASEBOARD_BRYA
	default "Google_Brask" if BOARD_GOOGLE_BASEBOARD_BRASK
	default "Google_Hades" if BOARD_GOOGLE_BASEBOARD_HADES
	default "Google_Nissa" if BOARD_GOOGLE_BASEBOARD_NISSA
	default "Google_Trulo" if BOARD_GOOGLE_BASEBOARD_TRULO

config MAINBOARD_PART_NUMBER
	default "Agah" if BOARD_GOOGLE_AGAH
	default "Anahera" if BOARD_GOOGLE_ANAHERA
	default "Anahera4ES" if BOARD_GOOGLE_ANAHERA4ES
	default "Anraggar" if BOARD_GOOGLE_ANRAGGAR
	default "Aurash" if BOARD_GOOGLE_AURASH
	default "Banshee" if BOARD_GOOGLE_BANSHEE
	default "Brask" if BOARD_GOOGLE_BRASK
	default "Brya" if BOARD_GOOGLE_BRYA0
	default "Bujia" if BOARD_GOOGLE_BUJIA
	default "Constitution" if BOARD_GOOGLE_CONSTITUTION
	default "Craask" if BOARD_GOOGLE_CRAASK
	default "Craaskov" if BOARD_GOOGLE_CRAASKOV
	default "Crota" if BOARD_GOOGLE_CROTA
	default "Dochi" if BOARD_GOOGLE_DOCHI
	default "Felwinter" if BOARD_GOOGLE_FELWINTER
	default "Gaelin" if BOARD_GOOGLE_GAELIN
	default "Gimble" if BOARD_GOOGLE_GIMBLE
	default "Gimble4ES" if BOARD_GOOGLE_GIMBLE4ES
	default "Gladios" if BOARD_GOOGLE_GLADIOS
	default "Glassway" if BOARD_GOOGLE_GLASSWAY
	default "Gothrax" if BOARD_GOOGLE_GOTHRAX
	default "Hades" if BOARD_GOOGLE_HADES
	default "Joxer" if BOARD_GOOGLE_JOXER
	default "Kano" if BOARD_GOOGLE_KANO
	default "Kinox" if BOARD_GOOGLE_KINOX
	default "Kuldax" if BOARD_GOOGLE_KULDAX
	default "Lisbon" if BOARD_GOOGLE_LISBON
	default "Marasov" if BOARD_GOOGLE_MARASOV
	default "Mithrax" if BOARD_GOOGLE_MITHRAX
	default "Moli" if BOARD_GOOGLE_MOLI
	default "Nereid" if BOARD_GOOGLE_NEREID
	default "Nivviks" if BOARD_GOOGLE_NIVVIKS
	default "Nokris" if BOARD_GOOGLE_NOKRIS
	default "Nova" if BOARD_GOOGLE_NOVA
	default "Omnigul" if BOARD_GOOGLE_OMNIGUL
	default "Osiris" if BOARD_GOOGLE_OSIRIS
	default "Pirrha" if BOARD_GOOGLE_PIRRHA
	default "Primus" if BOARD_GOOGLE_PRIMUS
	default "Pujjo" if BOARD_GOOGLE_PUJJO
	default "Quandiso" if BOARD_GOOGLE_QUANDISO
	default "Redrix" if BOARD_GOOGLE_REDRIX
	default "Redrix4ES" if BOARD_GOOGLE_REDRIX4ES
	default "Skolas" if BOARD_GOOGLE_SKOLAS
	default "Skolas4ES" if BOARD_GOOGLE_SKOLAS4ES
	default "Sundance" if BOARD_GOOGLE_SUNDANCE
	default "Taeko" if BOARD_GOOGLE_TAEKO
	default "Taeko4ES" if BOARD_GOOGLE_TAEKO4ES
	default "Taniks" if BOARD_GOOGLE_TANIKS
	default "Tivviks" if BOARD_GOOGLE_TIVVIKS
	default "Trulo" if BOARD_GOOGLE_TRULO
	default "Uldren" if BOARD_GOOGLE_ULDREN
	default "Vell" if BOARD_GOOGLE_VELL
	default "Volmar" if BOARD_GOOGLE_VOLMAR
	default "Xivu" if BOARD_GOOGLE_XIVU
	default "Xol" if BOARD_GOOGLE_XOL
	default "Yaviks" if BOARD_GOOGLE_YAVIKS
	default "Yavilla" if BOARD_GOOGLE_YAVILLA
	default "Yavista" if BOARD_GOOGLE_YAVISTA
	default "Zydron" if BOARD_GOOGLE_ZYDRON
	default "Pujjoga" if BOARD_GOOGLE_PUJJOGA

config VARIANT_DIR
	default "agah" if BOARD_GOOGLE_AGAH
	default "anahera" if BOARD_GOOGLE_ANAHERA
	default "anahera4es" if BOARD_GOOGLE_ANAHERA4ES
	default "anraggar" if BOARD_GOOGLE_ANRAGGAR
	default "aurash" if BOARD_GOOGLE_AURASH
	default "banshee" if BOARD_GOOGLE_BANSHEE
	default "brask" if BOARD_GOOGLE_BRASK
	default "brya0" if BOARD_GOOGLE_BRYA0
	default "bujia" if BOARD_GOOGLE_BUJIA
	default "constitution" if BOARD_GOOGLE_CONSTITUTION
	default "craask" if BOARD_GOOGLE_CRAASK
	default "craaskov" if BOARD_GOOGLE_CRAASKOV
	default "crota" if BOARD_GOOGLE_CROTA
	default "dochi" if BOARD_GOOGLE_DOCHI
	default "felwinter" if BOARD_GOOGLE_FELWINTER
	default "gaelin" if BOARD_GOOGLE_GAELIN
	default "gimble" if BOARD_GOOGLE_GIMBLE
	default "gimble4es" if BOARD_GOOGLE_GIMBLE4ES
	default "gladios" if BOARD_GOOGLE_GLADIOS
	default "glassway" if BOARD_GOOGLE_GLASSWAY
	default "gothrax" if BOARD_GOOGLE_GOTHRAX
	default "hades" if BOARD_GOOGLE_HADES
	default "joxer" if BOARD_GOOGLE_JOXER
	default "kano" if BOARD_GOOGLE_KANO
	default "kinox" if BOARD_GOOGLE_KINOX
	default "kuldax" if BOARD_GOOGLE_KULDAX
	default "lisbon" if BOARD_GOOGLE_LISBON
	default "marasov" if BOARD_GOOGLE_MARASOV
	default "mithrax" if BOARD_GOOGLE_MITHRAX
	default "moli" if BOARD_GOOGLE_MOLI
	default "nereid" if BOARD_GOOGLE_NEREID
	default "nivviks" if BOARD_GOOGLE_NIVVIKS
	default "nivviks" if BOARD_GOOGLE_TIVVIKS
	default "nokris" if BOARD_GOOGLE_NOKRIS
	default "nova" if BOARD_GOOGLE_NOVA
	default "omnigul" if BOARD_GOOGLE_OMNIGUL
	default "osiris" if BOARD_GOOGLE_OSIRIS
	default "pirrha" if BOARD_GOOGLE_PIRRHA
	default "primus" if BOARD_GOOGLE_PRIMUS
	default "pujjo" if BOARD_GOOGLE_PUJJO
	default "quandiso" if BOARD_GOOGLE_QUANDISO
	default "redrix" if BOARD_GOOGLE_REDRIX
	default "redrix4es" if BOARD_GOOGLE_REDRIX4ES
	default "skolas" if BOARD_GOOGLE_SKOLAS
	default "skolas4es" if BOARD_GOOGLE_SKOLAS4ES
	default "sundance" if BOARD_GOOGLE_SUNDANCE
	default "taeko" if BOARD_GOOGLE_TAEKO
	default "taeko4es" if BOARD_GOOGLE_TAEKO4ES
	default "taniks" if BOARD_GOOGLE_TANIKS
	default "trulo" if BOARD_GOOGLE_TRULO
	default "uldren" if BOARD_GOOGLE_ULDREN
	default "vell" if BOARD_GOOGLE_VELL
	default "volmar" if BOARD_GOOGLE_VOLMAR
	default "xivu" if BOARD_GOOGLE_XIVU
	default "xol" if BOARD_GOOGLE_XOL
	default "yaviks" if BOARD_GOOGLE_YAVIKS
	default "yavilla" if BOARD_GOOGLE_YAVILLA
	default "zydron" if BOARD_GOOGLE_ZYDRON
	default "yavista" if BOARD_GOOGLE_YAVISTA
	default "pujjoga" if BOARD_GOOGLE_PUJJOGA

config VBOOT
	select VBOOT_EARLY_EC_SYNC if !BOARD_GOOGLE_BASEBOARD_NISSA
	select VBOOT_LID_SWITCH

config UART_FOR_CONSOLE
	int
	default 0

config HAVE_WWAN_POWER_SEQUENCE
	def_bool n
	help
	  Select this if the variant has a WWAN module and requires the poweroff sequence
	  to be performed on shutdown. Must define WWAN_FCPO, WWAN_RST and WWAN_PERST GPIOs
	  in variant.h, as well as T1_OFF_MS (time between PERST & RST) and T2_OFF_MS (time
	  between RST and FCPO). WWAN_PERST and T1_OFF_MS are only necessary for PCIe WWAN
	  (when HAVE_PCIE_WWAN is also selected).

config HAVE_PCIE_WWAN
	def_bool n

config USE_PM_ACPI_TIMER
	default n

config DEFAULT_ADL_NEM
	bool
	help
	  Brya variants with Alder Lake ESx silicon to choose this config
	  as eNEM was fuse disable till ESx silicon revision.

choice
	prompt "Cache as RAM (CAR) setup configuration to use"
	default USE_ADL_NEM if DEFAULT_ADL_NEM
	default USE_ADL_ENEM

config USE_ADL_ENEM
	bool "eNEM: when selected, the variant will use eNEM instead of regular NEM."
	select INTEL_CAR_NEM_ENHANCED

config USE_ADL_NEM
	bool "NEM: when selected, the variant will use regular NEM."
	select INTEL_CAR_NEM

endchoice

config MEMORY_SODIMM
	def_bool n
	select SPD_CACHE_ENABLE
	select SPD_CACHE_IN_FMAP

config MEMORY_SOLDERDOWN
	def_bool n
	select CHROMEOS_DRAM_PART_NUMBER_IN_CBI if CHROMEOS
	select HAVE_SPD_IN_CBFS

config HAVE_SLP_S0_GATE
	def_bool n

config INCLUDE_NVIDIA_GPU_ASL
	def_bool n
	help
	  Select this if the variant has an Nvidia GN20 GPU attached to PEG1

config PCIEXP_DEFAULT_MAX_RESIZABLE_BAR_BITS
	int
	default 33

endif # BOARD_GOOGLE_BRYA_COMMON
