
config BOARD_GOOGLE_TROGDOR_COMMON  # Umbrella option to be selected by variants
	def_bool n

if BOARD_GOOGLE_TROGDOR_COMMON

config TROGDOR_REV0
	def_bool n

config TROGDOR_HAS_FINGERPRINT
	bool
	default y if BOARD_GOOGLE_COACHZ
	default y if BOARD_GOOGLE_MARZIPAN
	default n

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	select BOARD_ROMSIZE_KB_8192
	select COMMON_CBFS_SPI_WRAPPER
	select EC_GOOGLE_CHROMEEC if !BOARD_GOOGLE_BUBS
	select EC_GOOGLE_CHROMEEC_RTC if !BOARD_GOOGLE_BUBS
	select EC_GOOGLE_CHROMEEC_SPI if !BOARD_GOOGLE_BUBS
	select RTC if !BOARD_GOOGLE_BUBS
	select MISSING_BOARD_RESET if BOARD_GOOGLE_BUBS
	select DRIVERS_TI_SN65DSI86BRIDGE
	select SOC_QUALCOMM_SC7180
	select SPI_FLASH
	select SPI_FLASH_WINBOND
	select SPI_FLASH_GIGADEVICE
	select MAINBOARD_HAS_CHROMEOS
	select MAINBOARD_HAS_SPI_TPM_CR50 if !BOARD_GOOGLE_BUBS
	select MAINBOARD_HAS_TPM2 if !BOARD_GOOGLE_BUBS

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

config MAINBOARD_DIR
	string
	default "google/trogdor"

config DRIVER_TPM_SPI_BUS
	hex
	default 0x6 if TROGDOR_REV0
	default 0x0

config EC_GOOGLE_CHROMEEC_SPI_BUS
	hex
	default 0x0 if TROGDOR_REV0
	default 0x6

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

config MAINBOARD_PART_NUMBER
	string
	default "Bubs" if BOARD_GOOGLE_BUBS
	default "Coachz" if BOARD_GOOGLE_COACHZ
	default "Homestar" if BOARD_GOOGLE_HOMESTAR
	default "Lazor" if BOARD_GOOGLE_LAZOR
	default "Marzipan" if BOARD_GOOGLE_MARZIPAN
	default "Pompom" if BOARD_GOOGLE_POMPOM
	default "Trogdor" if BOARD_GOOGLE_TROGDOR

endif # BOARD_GOOGLE_TROGDOR_COMMON
