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_SX9324
	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_MUX
	select EC_GOOGLE_CHROMEEC_SKUID
	select FW_CONFIG
	select FW_CONFIG_SOURCE_CHROMEEC_CBI
	select GOOGLE_SMBIOS_MAINBOARD_VERSION
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	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_ENABLE_USB4_PCIE_RESOURCES if SOC_INTEL_ALDERLAKE_PCH_P
	select SOC_INTEL_COMMON_BASECODE_DEBUG_FEATURE

config BOARD_GOOGLE_BASEBOARD_BRYA
	def_bool n
	select BOARD_GOOGLE_BRYA_COMMON
	select BOARD_ROMSIZE_KB_32768
	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
	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_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 MEMORY_SOLDERDOWN
	select SOC_INTEL_ALDERLAKE_PCH_N
	select SOC_INTEL_CSE_LITE_COMPRESS_ME_RW
	select SYSTEM_TYPE_LAPTOP
	select TI50_FIRMWARE_VERSION_NOT_SUPPORTED
	select TPM_GOOGLE_TI50
	select SOC_INTEL_COMMON_MMC_OVERRIDE

config BOARD_GOOGLE_BASEBOARD_SKOLAS
	def_bool n
	select SOC_INTEL_RAPTORLAKE
	select BOARD_GOOGLE_BRYA_COMMON
	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

if BOARD_GOOGLE_BRYA_COMMON

config BASEBOARD_DIR
	string
	default "brya" if BOARD_GOOGLE_BASEBOARD_BRYA
	default "brask" if BOARD_GOOGLE_BASEBOARD_BRASK
	default "nissa" if BOARD_GOOGLE_BASEBOARD_NISSA
	default "skolas" if BOARD_GOOGLE_BASEBOARD_SKOLAS

config CHROMEOS
	select EC_GOOGLE_CHROMEEC_SWITCHES
	select HAS_RECOVERY_MRC_CACHE

config CHROMEOS_WIFI_SAR
	bool "Enable SAR options for Chrome OS 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 0x3 if BOARD_GOOGLE_BRYA4ES
	default 0x1 if BOARD_GOOGLE_BRASK
	default 0x1 if BOARD_GOOGLE_PRIMUS
	default 0x3 if BOARD_GOOGLE_PRIMUS4ES
	default 0x1 if BOARD_GOOGLE_GHOST4ADL
	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 0x3 if BOARD_GOOGLE_SKOLAS4ES
	default 0x0 if BOARD_GOOGLE_JOXER
	default 0x0 if BOARD_GOOGLE_PUJJO

config DRIVER_TPM_I2C_ADDR
	hex
	default 0x50

config FMDFILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-serger.fmd" if BOARD_GOOGLE_BRASK
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-nissa-16MiB.fmd" if BOARD_GOOGLE_BASEBOARD_NISSA && BOARD_ROMSIZE_KB_16384
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-nissa-32MiB.fmd" if BOARD_GOOGLE_BASEBOARD_NISSA && BOARD_ROMSIZE_KB_32768
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd"

config TPM_TIS_ACPI_INTERRUPT
	int
	default 13 # GPE0_DW0_13 (GPP_A13_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_Nissa" if BOARD_GOOGLE_BASEBOARD_NISSA
	default "Google_Skolas" if BOARD_GOOGLE_BASEBOARD_SKOLAS

config MAINBOARD_PART_NUMBER
	default "Brya" if BOARD_GOOGLE_BRYA0
	default "Brya4ES" if BOARD_GOOGLE_BRYA4ES
	default "Brask" if BOARD_GOOGLE_BRASK
	default "Primus" if BOARD_GOOGLE_PRIMUS
	default "Primus4ES" if BOARD_GOOGLE_PRIMUS4ES
	default "Ghost4ADL" if BOARD_GOOGLE_GHOST4ADL
	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 "Skolas4ES" if BOARD_GOOGLE_SKOLAS4ES
	default "Joxer" if BOARD_GOOGLE_JOXER
	default "Pujjo" if BOARD_GOOGLE_PUJJO

config VARIANT_DIR
	default "brya0" if BOARD_GOOGLE_BRYA0
	default "brya4es" if BOARD_GOOGLE_BRYA4ES
	default "brask" if BOARD_GOOGLE_BRASK
	default "primus" if BOARD_GOOGLE_PRIMUS
	default "primus4es" if BOARD_GOOGLE_PRIMUS4ES
	default "ghost4adl" if BOARD_GOOGLE_GHOST4ADL
	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 "skolas4es" if BOARD_GOOGLE_SKOLAS4ES
	default "joxer" if BOARD_GOOGLE_JOXER
	default "pujjo" if BOARD_GOOGLE_PUJJO

config VBOOT
	select VBOOT_EARLY_EC_SYNC if !BOARD_GOOGLE_BASEBOARD_NISSA
	select VBOOT_LID_SWITCH

config VBOOT_GSC_BOARD_ID
	string
	default "LBTV" if BOARD_GOOGLE_JOXER

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 y if BOARD_GOOGLE_PRIMUS4ES
	default n

choice
	prompt "Cache as RAM (CAR) setup configuration to use"
	default USE_ADL_NEM if BOARD_GOOGLE_BRYA4ES || BOARD_GOOGLE_PRIMUS4ES || BOARD_GOOGLE_GIMBLE4ES || BOARD_GOOGLE_REDRIX4ES || BOARD_GOOGLE_TAEKO4ES || BOARD_GOOGLE_ANAHERA4ES || BOARD_GOOGLE_TANIKS || BOARD_GOOGLE_NIVVIKS || BOARD_GOOGLE_NEREID || BOARD_GOOGLE_CRAASK || BOARD_GOOGLE_SKOLAS4ES || BOARD_GOOGLE_JOXER || BOARD_GOOGLE_PUJJO
	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 32

endif # BOARD_GOOGLE_BRYA_COMMON
