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

config BOARD_GOOGLE_BUBS
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_COACHZ
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_GELARSHIE
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_HOMESTAR
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_KINGOFTOWN
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_LAZOR
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_MARZIPAN
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_MRBLAND
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_PAZQUEL
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_POMPOM
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_QUACKINGSTICK
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_WORMDINGLER
	select BOARD_GOOGLE_TROGDOR_COMMON

config BOARD_GOOGLE_TROGDOR
	select BOARD_GOOGLE_TROGDOR_COMMON

if BOARD_GOOGLE_TROGDOR_COMMON

config TROGDOR_REV0
	def_bool n

config TROGDOR_HAS_BRIDGE_BACKLIGHT
	bool
	default y if BOARD_GOOGLE_HOMESTAR
	default n

config TROGDOR_HAS_MIPI_PANEL
	bool
	default y if BOARD_GOOGLE_MRBLAND || BOARD_GOOGLE_QUACKINGSTICK || BOARD_GOOGLE_WORMDINGLER
	select MIPI_PANEL_AUO_B101UAN08_3 if BOARD_GOOGLE_MRBLAND || BOARD_GOOGLE_QUACKINGSTICK
	select MIPI_PANEL_BOE_TV101WUM_N53 if BOARD_GOOGLE_MRBLAND
	select MIPI_PANEL_INX_HJ110IZ_01A_B2 if BOARD_GOOGLE_WORMDINGLER
	select MIPI_PANEL_BOE_TV110C9M_LL0 if BOARD_GOOGLE_WORMDINGLER
	default 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 DRIVER_PARADE_PS8640
	select SOC_QUALCOMM_SC7180
	select SPI_FLASH
	select SPI_FLASH_MACRONIX
	select SPI_FLASH_GIGADEVICE
	select SPI_FLASH_WINBOND
	select MAINBOARD_HAS_CHROMEOS
	select MAINBOARD_HAS_TPM2 if !BOARD_GOOGLE_BUBS
	select SPI_TPM if !BOARD_GOOGLE_BUBS
	select TPM_GOOGLE_CR50 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
	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
	default "Bubs" if BOARD_GOOGLE_BUBS
	default "Coachz" if BOARD_GOOGLE_COACHZ
	default "Gelarshie" if BOARD_GOOGLE_GELARSHIE
	default "Homestar" if BOARD_GOOGLE_HOMESTAR
	default "Kingoftown" if BOARD_GOOGLE_KINGOFTOWN
	default "Lazor" if BOARD_GOOGLE_LAZOR
	default "Marzipan" if BOARD_GOOGLE_MARZIPAN
	default "Mrbland" if BOARD_GOOGLE_MRBLAND
	default "Pazquel" if BOARD_GOOGLE_PAZQUEL
	default "Pompom" if BOARD_GOOGLE_POMPOM
	default "Quackingstick" if BOARD_GOOGLE_QUACKINGSTICK
	default "Trogdor" if BOARD_GOOGLE_TROGDOR
	default "Wormdingler" if BOARD_GOOGLE_WORMDINGLER

endif # BOARD_GOOGLE_TROGDOR_COMMON
