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

config BOARD_GOOGLE_HEROBRINE_COMMON
	def_bool BOARD_GOOGLE_EVOKER || \
		 BOARD_GOOGLE_HEROBRINE || \
		 BOARD_GOOGLE_HEROBRINE_REV0 || \
		 BOARD_GOOGLE_HOGLIN || \
		 BOARD_GOOGLE_PIGLIN || \
		 BOARD_GOOGLE_SENOR || \
		 BOARD_GOOGLE_VILLAGER || \
		 BOARD_GOOGLE_ZOGLIN || \
		 BOARD_GOOGLE_ZOMBIE

if BOARD_GOOGLE_HEROBRINE_COMMON

config HEROBRINE_HAS_FINGERPRINT
	def_bool BOARD_GOOGLE_HEROBRINE || \
		 BOARD_GOOGLE_HEROBRINE_REV0

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	select BOARD_ROMSIZE_KB_65536 if BOARD_GOOGLE_PIGLIN || BOARD_GOOGLE_HOGLIN
	select BOARD_ROMSIZE_KB_8192 if !BOARD_GOOGLE_PIGLIN && !BOARD_GOOGLE_HOGLIN
	select COMMON_CBFS_SPI_WRAPPER
	select EC_GOOGLE_CHROMEEC if !BOARD_GOOGLE_SENOR
	select EC_GOOGLE_CHROMEEC_RTC if !BOARD_GOOGLE_SENOR
	select EC_GOOGLE_CHROMEEC_SKUID if !BOARD_GOOGLE_SENOR
	select EC_GOOGLE_CHROMEEC_SPI if !BOARD_GOOGLE_SENOR
	select RTC if !BOARD_GOOGLE_SENOR
	select MISSING_BOARD_RESET if BOARD_GOOGLE_SENOR
	select SOC_QUALCOMM_SC7280
	select SPI_FLASH
	select SPI_FLASH_EXIT_4_BYTE_ADDR_MODE
	select SPI_FLASH_GIGADEVICE
	select SPI_FLASH_MACRONIX
	select SPI_FLASH_WINBOND
	select TPM_GOOGLE_CR50 if !BOARD_GOOGLE_SENOR
	select SPI_TPM if BOARD_GOOGLE_PIGLIN
	select I2C_TPM if !BOARD_GOOGLE_PIGLIN && !BOARD_GOOGLE_SENOR
	select MAINBOARD_HAS_CHROMEOS
	select MAINBOARD_HAS_TPM2 if !BOARD_GOOGLE_SENOR

config VBOOT
	select EC_GOOGLE_CHROMEEC_SWITCHES if !BOARD_GOOGLE_SENOR
	select VBOOT_VBNV_FLASH
	select VBOOT_NO_BOARD_SUPPORT if BOARD_GOOGLE_SENOR
	select VBOOT_MOCK_SECDATA if BOARD_GOOGLE_SENOR

config MAINBOARD_DIR
	default "google/herobrine"

config MAINBOARD_VENDOR
	string
	default "Google"


##########################################################
#### Update below when adding a new derivative board. ####
##########################################################

config MAINBOARD_PART_NUMBER
	default "Herobrine" if BOARD_GOOGLE_HEROBRINE
	default "Herobrine.rev0" if BOARD_GOOGLE_HEROBRINE_REV0
	default "Senor" if BOARD_GOOGLE_SENOR
	default "Piglin" if BOARD_GOOGLE_PIGLIN
	default "Hoglin" if BOARD_GOOGLE_HOGLIN
	default "Villager" if BOARD_GOOGLE_VILLAGER
	default "Evoker" if BOARD_GOOGLE_EVOKER
	default "Zoglin" if BOARD_GOOGLE_ZOGLIN
	default "Zombie" if BOARD_GOOGLE_ZOMBIE

config DRIVER_TPM_I2C_BUS
	depends on I2C_TPM
	hex
	default 0xC if BOARD_GOOGLE_HEROBRINE_REV0
	default 0xE

config DRIVER_TPM_I2C_ADDR
	default 0x50

config DRIVER_TPM_SPI_BUS
	depends on SPI_TPM
	hex
	default 0xE

config EC_GOOGLE_CHROMEEC_SPI_BUS
	hex
	default 0x8 if BOARD_GOOGLE_HEROBRINE_REV0
	default 0xA

endif # BOARD_GOOGLE_HEROBRINE_COMMON
