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

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_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 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 if SOC_INTEL_ALDERLAKE_PCH_P
	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 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
	select CR50_RESET_CLEAR_EC_AP_IDLE_FLAG

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_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 INTEL_GMA_HAVE_VBT
	select DRIVERS_INTEL_MIPI_CAMERA
	select HAVE_WWAN_POWER_SEQUENCE
	select DRIVERS_GFX_GENERIC
	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_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
	select DRIVERS_GENERIC_NAU8315

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 SOC_INTEL_RAPTORLAKE
	select DRIVERS_INTEL_ISH
	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

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_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_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 GOOGLE_DSM_CALIB if VPD
	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_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_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
	select DRIVERS_GENERIC_NAU8315

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_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

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 HAVE_WWAN_POWER_SEQUENCE
	select INTEL_GMA_HAVE_VBT
	select EC_GOOGLE_CHROMEEC_INCLUDE_SSFC_IN_FW_CONFIG

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

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 0x1 if BOARD_GOOGLE_BRYA0
	default 0x1 if BOARD_GOOGLE_BRASK
	default 0x1 if BOARD_GOOGLE_PRIMUS
	default 0x1 if BOARD_GOOGLE_GIMBLE
	default 0x3 if BOARD_GOOGLE_GIMBLE4ES
	default 0x1 if BOARD_GOOGLE_REDRIX
	default 0x3 if BOARD_GOOGLE_REDRIX4ES
	default 0x1 if BOARD_GOOGLE_KANO
	default 0x1 if BOARD_GOOGLE_TAEKO
	default 0x3 if BOARD_GOOGLE_TAEKO4ES
	default 0x1 if BOARD_GOOGLE_FELWINTER
	default 0x1 if BOARD_GOOGLE_ANAHERA
	default 0x3 if BOARD_GOOGLE_ANAHERA4ES
	default 0x1 if BOARD_GOOGLE_VELL
	default 0x1 if BOARD_GOOGLE_TANIKS
	default 0x0 if BOARD_GOOGLE_NIVVIKS
	default 0x0 if BOARD_GOOGLE_NEREID
	default 0x3 if BOARD_GOOGLE_AGAH
	default 0x1 if BOARD_GOOGLE_VOLMAR
	default 0x1 if BOARD_GOOGLE_BANSHEE
	default 0x1 if BOARD_GOOGLE_KINOX
	default 0x0 if BOARD_GOOGLE_CRAASK
	default 0x1 if BOARD_GOOGLE_CROTA
	default 0x1 if BOARD_GOOGLE_MOLI
	default 0x1 if BOARD_GOOGLE_OSIRIS
	default 0x1 if BOARD_GOOGLE_MITHRAX
	default 0x1 if BOARD_GOOGLE_KULDAX
	default 0x1 if BOARD_GOOGLE_SKOLAS
	default 0x1 if BOARD_GOOGLE_SKOLAS4ES
	default 0x0 if BOARD_GOOGLE_JOXER
	default 0x0 if BOARD_GOOGLE_PUJJO
	default 0x0 if BOARD_GOOGLE_XIVU
	default 0x0 if BOARD_GOOGLE_YAVIKS
	default 0x1 if BOARD_GOOGLE_ZYDRON
	default 0x1 if BOARD_GOOGLE_LISBON
	default 0x1 if BOARD_GOOGLE_GLADIOS
	default 0x1 if BOARD_GOOGLE_MARASOV
	default 0x1 if BOARD_GOOGLE_GAELIN
	default 0x1 if BOARD_GOOGLE_OMNIGUL
	default 0x1 if BOARD_GOOGLE_CONSTITUTION
	default 0x1 if BOARD_GOOGLE_AURASH
	default 0x3 if BOARD_GOOGLE_HADES
	default 0x0 if BOARD_GOOGLE_YAVILLA
	default 0x0 if BOARD_GOOGLE_ULDREN
	default 0x0 if BOARD_GOOGLE_CRAASKOV
	default 0x0 if BOARD_GOOGLE_GOTHRAX
	default 0x0 if BOARD_GOOGLE_PIRRHA
	default 0x1 if BOARD_GOOGLE_DOCHI
	default 0x0 if BOARD_GOOGLE_QUANDISO
	default 0x0 if BOARD_GOOGLE_ANRAGGAR
	default 0x1 if BOARD_GOOGLE_XOL
	default 0x0 if BOARD_GOOGLE_GLASSWAY

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-nissa-16MiB-debugfsp.fmd" if CHROMEOS && BOARD_GOOGLE_BASEBOARD_NISSA && BOARD_ROMSIZE_KB_16384 && BUILDING_WITH_DEBUG_FSP
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-nissa-16MiB.fmd" if CHROMEOS && BOARD_GOOGLE_BASEBOARD_NISSA && BOARD_ROMSIZE_KB_16384
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-nissa-32MiB.fmd" if CHROMEOS && BOARD_GOOGLE_BASEBOARD_NISSA && BOARD_ROMSIZE_KB_32768
	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

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

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

config VBOOT
	select VBOOT_EARLY_EC_SYNC if !BOARD_GOOGLE_BASEBOARD_NISSA
	select VBOOT_LID_SWITCH

config DIMM_SPD_SIZE
	default 512

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
