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

# Umbrella option to be selected by variant boards.
config BOARD_GOOGLE_CORSOLA_COMMON
	def_bool n
	select SOC_MEDIATEK_MT8186
	select BOARD_ROMSIZE_KB_8192
	select MAINBOARD_HAS_CHROMEOS
	select CHROMEOS_USE_EC_WATCHDOG_FLAG if CHROMEOS
	select COMMON_CBFS_SPI_WRAPPER
	select SPI_FLASH
	select SPI_FLASH_INCLUDE_ALL_DRIVERS
	select COMMONLIB_STORAGE
	select COMMONLIB_STORAGE_MMC
	select EC_GOOGLE_CHROMEEC
	select EC_GOOGLE_CHROMEEC_BOARDID
	select EC_GOOGLE_CHROMEEC_SKUID
	select EC_GOOGLE_CHROMEEC_SPI
	select SPI_TPM if VBOOT
	select TPM_GOOGLE_TI50 if VBOOT
	select MAINBOARD_HAS_TPM2 if VBOOT
	select MAINBOARD_HAS_NATIVE_VGA_INIT
	select HAVE_LINEAR_FRAMEBUFFER
	select RTC

config BOARD_GOOGLE_KINGLER_COMMON
	def_bool n
	select BOARD_GOOGLE_CORSOLA_COMMON

config BOARD_GOOGLE_KRABBY_COMMON
	def_bool n
	select BOARD_GOOGLE_CORSOLA_COMMON

config BOARD_GOOGLE_STARYU_COMMON
	def_bool n
	select BOARD_GOOGLE_CORSOLA_COMMON

config BOARD_GOOGLE_KINGLER
	select BOARD_GOOGLE_KINGLER_COMMON
	select DRIVER_ANALOGIX_ANX7625

config BOARD_GOOGLE_PONYTA
	select BOARD_GOOGLE_KINGLER_COMMON
	select DRIVER_ANALOGIX_ANX7625

config BOARD_GOOGLE_STEELIX
	select BOARD_GOOGLE_KINGLER_COMMON
	select DRIVER_ANALOGIX_ANX7625
	select DRIVER_PARADE_PS8640

config BOARD_GOOGLE_VOLTORB
	select BOARD_GOOGLE_KINGLER_COMMON
	select DRIVER_ANALOGIX_ANX7625

config BOARD_GOOGLE_KRABBY
	select BOARD_GOOGLE_KRABBY_COMMON
	select DRIVER_PARADE_PS8640

config BOARD_GOOGLE_CHINCHOU
	select BOARD_GOOGLE_KRABBY_COMMON
	select DRIVER_ANALOGIX_ANX7625

config BOARD_GOOGLE_TENTACRUEL
	select BOARD_GOOGLE_KRABBY_COMMON
	select DRIVER_PARADE_PS8640

config BOARD_GOOGLE_MAGIKARP
	select BOARD_GOOGLE_KRABBY_COMMON
	select DRIVER_PARADE_PS8640

config BOARD_GOOGLE_STARMIE
	select BOARD_GOOGLE_STARYU_COMMON
	select MIPI_PANEL_STA_HIMAX83102_J02
	select MIPI_PANEL_STA_ILI9882T

if BOARD_GOOGLE_CORSOLA_COMMON

config VBOOT
	select EC_GOOGLE_CHROMEEC_SWITCHES
	select VBOOT_VBNV_FLASH

config MAINBOARD_DIR
	string
	default "google/corsola"

config MAINBOARD_PART_NUMBER
	string
	default "Kingler" if BOARD_GOOGLE_KINGLER
	default "Krabby" if BOARD_GOOGLE_KRABBY
	default "Steelix" if BOARD_GOOGLE_STEELIX
	default "Tentacruel" if BOARD_GOOGLE_TENTACRUEL
	default "Magikarp" if BOARD_GOOGLE_MAGIKARP
	default "Voltorb" if BOARD_GOOGLE_VOLTORB
	default "Starmie" if BOARD_GOOGLE_STARMIE
	default "Ponyta" if BOARD_GOOGLE_PONYTA
	default "Chinchou" if BOARD_GOOGLE_CHINCHOU

config BOOT_DEVICE_SPI_FLASH_BUS
	int
	default 7

config SDCARD_INIT
	bool
	default y if BOARD_GOOGLE_MAGIKARP
	default y if BOARD_GOOGLE_TENTACRUEL
	default y if BOARD_GOOGLE_KINGLER_COMMON
	default n if BOARD_GOOGLE_KRABBY_COMMON

config DRIVER_TPM_SPI_BUS
	hex
	default 0x2

config EC_GOOGLE_CHROMEEC_SPI_BUS
	hex
	default 0x1
endif
