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

config BOARD_GOOGLE_CORSOLA_COMMON
	def_bool BOARD_GOOGLE_KINGLER_COMMON || \
		 BOARD_GOOGLE_KRABBY_COMMON || \
		 BOARD_GOOGLE_STARYU_COMMON

config BOARD_GOOGLE_KINGLER_COMMON
	def_bool BOARD_GOOGLE_KINGLER || \
		 BOARD_GOOGLE_KYOGRE || \
		 BOARD_GOOGLE_PONYTA || \
		 BOARD_GOOGLE_STEELIX || \
		 BOARD_GOOGLE_VOLTORB

config BOARD_GOOGLE_KRABBY_COMMON
	def_bool BOARD_GOOGLE_CHINCHOU || \
		 BOARD_GOOGLE_KRABBY || \
		 BOARD_GOOGLE_MAGIKARP || \
		 BOARD_GOOGLE_SKITTY || \
		 BOARD_GOOGLE_TENTACRUEL || \
		 BOARD_GOOGLE_VELUZA

config BOARD_GOOGLE_STARYU_COMMON
	def_bool BOARD_GOOGLE_STARMIE || \
		 BOARD_GOOGLE_WUGTRIO

if BOARD_GOOGLE_CORSOLA_COMMON

config CORSOLA_SDCARD_INIT
	def_bool BOARD_GOOGLE_MAGIKARP || \
		 BOARD_GOOGLE_TENTACRUEL || \
		 BOARD_GOOGLE_KINGLER_COMMON || \
		 BOARD_GOOGLE_WUGTRIO

config BOARD_SPECIFIC_OPTIONS
	def_bool y
	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 DRIVER_ANALOGIX_ANX7625 if BOARD_GOOGLE_CHINCHOU || \
					  BOARD_GOOGLE_KINGLER || \
					  BOARD_GOOGLE_KYOGRE || \
					  BOARD_GOOGLE_PONYTA || \
					  BOARD_GOOGLE_STEELIX || \
					  BOARD_GOOGLE_VOLTORB
	select DRIVER_PARADE_PS8640 if BOARD_GOOGLE_KRABBY || \
				       BOARD_GOOGLE_MAGIKARP || \
				       BOARD_GOOGLE_SKITTY || \
				       BOARD_GOOGLE_STEELIX || \
				       BOARD_GOOGLE_TENTACRUEL || \
				       BOARD_GOOGLE_VELUZA
	select RTC
	select FW_CONFIG
	select FW_CONFIG_SOURCE_CHROMEEC_CBI
	select MIPI_PANEL_KD_KD101NE3_40TI if BOARD_GOOGLE_WUGTRIO
	select MIPI_PANEL_STA_HIMAX83102_J02 if BOARD_GOOGLE_STARMIE
	select MIPI_PANEL_STA_ILI9882T if BOARD_GOOGLE_STARMIE

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 "Kyogre" if BOARD_GOOGLE_KYOGRE
	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
	default "Wugtrio" if BOARD_GOOGLE_WUGTRIO
	default "Skitty" if BOARD_GOOGLE_SKITTY
	default "Veluza" if BOARD_GOOGLE_VELUZA

config BOOT_DEVICE_SPI_FLASH_BUS
	int
	default 7

config DRIVER_TPM_SPI_BUS
	hex
	default 0x2

config EC_GOOGLE_CHROMEEC_SPI_BUS
	hex
	default 0x1
endif
