config BOARD_GOOGLE_REX_COMMON
	def_bool n
	select BOARD_ROMSIZE_KB_32768
	select DRIVERS_GFX_GENERIC
	select DRIVERS_I2C_GENERIC
	select DRIVERS_I2C_HID
	select DRIVERS_INTEL_DPTF
	select DRIVERS_INTEL_DPTF_SUPPORTS_TPCH
	select DRIVERS_INTEL_USB4_RETIMER
	select DRIVERS_WIFI_GENERIC
	select DRIVERS_INTEL_MIPI_CAMERA
	select DRIVERS_SPI_ACPI
	select EC_GOOGLE_CHROMEEC
	select EC_GOOGLE_CHROMEEC_BOARDID
	select EC_GOOGLE_CHROMEEC_ESPI
	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_DISABLE_STAGE_CACHE
	select MAINBOARD_HAS_TPM2
	select PMC_IPC_ACPI_INTERFACE
	select SOC_INTEL_COMMON_BLOCK_VARIANT_POWER_LIMIT
	select SOC_INTEL_CSE_LITE_SKU
	select SOC_INTEL_CSE_PRE_CPU_RESET_TELEMETRY_V2
	select SOC_INTEL_CSE_SEND_EOP_ASYNC

config BOARD_GOOGLE_BASEBOARD_REX
	def_bool n
	select BOARD_GOOGLE_REX_COMMON
	select DRIVERS_INTEL_PMC
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_WWAN_FM350GL
	select HAVE_SLP_S0_GATE
	select MAINBOARD_HAS_CHROMEOS
	select MEMORY_SOLDERDOWN
	select SOC_INTEL_CRASHLOG
	select SOC_INTEL_IOE_DIE_SUPPORT
	select SOC_INTEL_METEORLAKE_U_H
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
	select SYSTEM_TYPE_LAPTOP
	select TPM_GOOGLE_TI50

config BOARD_GOOGLE_BASEBOARD_OVIS
	def_bool n
	select BOARD_GOOGLE_REX_COMMON
	select DRIVERS_INTEL_PMC
	select ENABLE_TCSS_DISPLAY_DETECTION if RUN_FSP_GOP
	select HAVE_SLP_S0_GATE
	select MAINBOARD_HAS_CHROMEOS
	select MEMORY_SOLDERDOWN
	select SOC_INTEL_CRASHLOG
	select SOC_INTEL_IOE_DIE_SUPPORT
	select SOC_INTEL_METEORLAKE_U_H
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
	select TPM_GOOGLE_TI50

if BOARD_GOOGLE_REX_COMMON

config BASEBOARD_DIR
	string
	default "rex" if BOARD_GOOGLE_BASEBOARD_REX
	default "ovis" if BOARD_GOOGLE_BASEBOARD_OVIS

config CHROMEOS
	select EC_GOOGLE_CHROMEEC_SWITCHES
	select GBB_FLAG_FORCE_DEV_SWITCH_ON
	select GBB_FLAG_FORCE_DEV_BOOT_USB
	select GBB_FLAG_FORCE_MANUAL_RECOVERY
	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 FMDFILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos_ec_ish-debug-fsp.fmd" if CHROMEOS && BOARD_GOOGLE_REX_EC_ISH && BUILDING_WITH_DEBUG_FSP
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos_ec_ish.fmd" if CHROMEOS && BOARD_GOOGLE_REX_EC_ISH
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos-debug-fsp.fmd" if CHROMEOS && BUILDING_WITH_DEBUG_FSP
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if CHROMEOS

config MAINBOARD_DIR
	default "google/rex"

config MAINBOARD_FAMILY
	string
	default "Google_Rex" if BOARD_GOOGLE_BASEBOARD_REX
	default "Google_Ovis" if BOARD_GOOGLE_BASEBOARD_OVIS

config MAINBOARD_PART_NUMBER
	default "Rex" if BOARD_GOOGLE_REX0 || BOARD_GOOGLE_REX_EC_ISH
	default "Screebo" if BOARD_GOOGLE_SCREEBO
	default "Karis" if BOARD_GOOGLE_KARIS
	default "Ovis" if BOARD_GOOGLE_OVIS

config VARIANT_DIR
	string
	default "rex0" if BOARD_GOOGLE_REX0 || BOARD_GOOGLE_REX_EC_ISH
	default "screebo" if BOARD_GOOGLE_SCREEBO
	default "karis" if BOARD_GOOGLE_KARIS
	default "ovis" if BOARD_GOOGLE_OVIS

config DIMM_SPD_SIZE
	default 512

config MEMORY_SOLDERDOWN
	def_bool n
	select CHROMEOS_DRAM_PART_NUMBER_IN_CBI if CHROMEOS
	select HAVE_SPD_IN_CBFS

config VBOOT
	select VBOOT_EARLY_EC_SYNC
	select VBOOT_LID_SWITCH

config UART_FOR_CONSOLE
	int
	default 0

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

config DRIVER_TPM_I2C_BUS
	hex
	default 0x4 if BOARD_GOOGLE_REX0 || BOARD_GOOGLE_SCREEBO || BOARD_GOOGLE_REX_EC_ISH || BOARD_GOOGLE_OVIS

config DRIVER_TPM_I2C_ADDR
	hex
	default 0x50

config TPM_TIS_ACPI_INTERRUPT
	int
	default 35  # GPE0_DW1_03 (GPP_E03)

config USE_PM_ACPI_TIMER
	default n

config HAVE_SLP_S0_GATE
	def_bool n

endif # BOARD_GOOGLE_REX_COMMON
