
config BOARD_GOOGLE_BASEBOARD_HATCH
	def_bool n
	select DRIVERS_GENERIC_GPIO_KEYS
	select DRIVERS_GENERIC_MAX98357A
	select DRIVERS_I2C_DA7219
	select DRIVERS_I2C_GENERIC
	select DRIVERS_I2C_HID
	select DRIVERS_I2C_SX9310
	select DRIVERS_SPI_ACPI
	select DRIVERS_USB_ACPI
	select EC_GOOGLE_CHROMEEC
	select EC_GOOGLE_CHROMEEC_BOARDID
	select EC_GOOGLE_CHROMEEC_ESPI
	select GOOGLE_SMBIOS_MAINBOARD_VERSION
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_CHROMEOS
	select MAINBOARD_HAS_SPI_TPM_CR50
	select MAINBOARD_HAS_TPM2
	select MB_HAS_ACTIVE_HIGH_SD_PWR_ENABLE
	select SOC_INTEL_COMETLAKE
	select SYSTEM_TYPE_LAPTOP

if BOARD_GOOGLE_BASEBOARD_HATCH

config CHROMEOS
	bool
	default y
	select EC_GOOGLE_CHROMEEC_SWITCHES
	select GBB_FLAG_FORCE_DEV_SWITCH_ON
	select GBB_FLAG_FORCE_DEV_BOOT_USB
	select GBB_FLAG_FORCE_DEV_BOOT_LEGACY
	select GBB_FLAG_FORCE_MANUAL_RECOVERY
	select HAS_RECOVERY_MRC_CACHE
	select MRC_CLEAR_NORMAL_CACHE_ON_RECOVERY_RETRAIN
	select VBOOT_LID_SWITCH

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
	select WIFI_SAR_CBFS

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

config DIMM_MAX
	int
	default 2

config DIMM_SPD_SIZE
	int
	default 512

config ROMSTAGE_SPD_CBFS
	bool
	default y if !ROMSTAGE_SPD_SMBUS

config ROMSTAGE_SPD_SMBUS
	bool
	default n

config DRIVER_TPM_SPI_BUS
	default 0x1

config UART_FOR_CONSOLE
	default 0

config FMDFILE
	string
	default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/chromeos-16MiB.fmd" if BOARD_ROMSIZE_KB_16384
	default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" if BOARD_ROMSIZE_KB_32768

config MAINBOARD_DIR
	string
	default "google/hatch"

config MAINBOARD_FAMILY
	string
	default "Google_Hatch"

config MAINBOARD_PART_NUMBER
	string
	default "Akemi" if BOARD_GOOGLE_AKEMI
	default "Dratini" if BOARD_GOOGLE_DRATINI
	default "Hatch" if BOARD_GOOGLE_HATCH
	default "Helios" if BOARD_GOOGLE_HELIOS
	default "Helios_Diskswap" if BOARD_GOOGLE_HELIOS_DISKSWAP
	default "Jinlon" if BOARD_GOOGLE_JINLON
	default "Kindred" if BOARD_GOOGLE_KINDRED
	default "Kohaku" if BOARD_GOOGLE_KOHAKU
	default "Nightfury" if BOARD_GOOGLE_NIGHTFURY
	default "Puff" if BOARD_GOOGLE_PUFF
	default "Stryke" if BOARD_GOOGLE_STRYKE

config MAINBOARD_VENDOR
	string
	default "Google"

config MAX_CPUS
	int
	default 8

config OVERRIDE_DEVICETREE
	string
	default "variants/helios_diskswap/overridetree.cb" if BOARD_GOOGLE_HELIOS_DISKSWAP
	default "variants/$(CONFIG_VARIANT_DIR)/overridetree.cb"

config TPM_TIS_ACPI_INTERRUPT
	int
	default 53 # GPE0_DW1_21 (GPP_C21)

config VARIANT_DIR
	string
	default "akemi" if BOARD_GOOGLE_AKEMI
	default "dratini" if BOARD_GOOGLE_DRATINI
	default "hatch" if BOARD_GOOGLE_HATCH
	default "helios" if BOARD_GOOGLE_HELIOS
	default "helios" if BOARD_GOOGLE_HELIOS_DISKSWAP
	default "jinlon" if BOARD_GOOGLE_JINLON
	default "kindred" if BOARD_GOOGLE_KINDRED
	default "kohaku" if BOARD_GOOGLE_KOHAKU
	default "nightfury" if BOARD_GOOGLE_NIGHTFURY
	default "puff" if BOARD_GOOGLE_PUFF
	default "stryke" if BOARD_GOOGLE_STRYKE

config VBOOT
	select HAS_RECOVERY_MRC_CACHE
	select MRC_CLEAR_NORMAL_CACHE_ON_RECOVERY_RETRAIN
	select VBOOT_LID_SWITCH

endif # BOARD_GOOGLE_BASEBOARD_HATCH
