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

config BOARD_STARLABS_STARBOOK_SERIES
	def_bool n
	select DRIVERS_I2C_HID
	select EC_STARLABS_ITE
	select EC_STARLABS_FAN
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
	select HAVE_CMOS_DEFAULT
	select HAVE_OPTION_TABLE
	select INTEL_GMA_HAVE_VBT
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_TPM2
	select NO_UART_ON_SUPERIO
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB
	select SYSTEM_TYPE_LAPTOP
	select VALIDATE_INTEL_DESCRIPTOR

config BOARD_STARLABS_LABTOP_KBL
	select BOARD_ROMSIZE_KB_8192
	select BOARD_STARLABS_STARBOOK_SERIES
	select CRB_TPM
	select HAVE_INTEL_PTT
	select HAVE_SPD_IN_CBFS
	select MAINBOARD_HAS_LIBGFXINIT
	select SOC_INTEL_KABYLAKE
	select SPI_FLASH_GIGADEVICE

config BOARD_STARLABS_LABTOP_CML
	select BOARD_ROMSIZE_KB_16384
	select BOARD_STARLABS_STARBOOK_SERIES
	select EC_STARLABS_MAX_CHARGE
	select EC_STARLABS_NEED_ITE_BIN
	select HAVE_INTEL_PTT
	select HAVE_SPD_IN_CBFS
	select CRB_TPM
	select MAINBOARD_HAS_LIBGFXINIT
	select SOC_INTEL_COMETLAKE_1
	select SPI_FLASH_WINBOND

config BOARD_STARLABS_STARBOOK_TGL
	select BOARD_ROMSIZE_KB_16384
	select BOARD_STARLABS_STARBOOK_SERIES
	select DRIVERS_INTEL_PMC
	select DRIVERS_INTEL_USB4_RETIMER
	select EC_STARLABS_KBL_LEVELS
	select EC_STARLABS_MAX_CHARGE
	select EC_STARLABS_MERLIN
	select EC_STARLABS_NEED_ITE_BIN
	select MEMORY_MAPPED_TPM
	select SOC_INTEL_COMMON_BLOCK_TCSS
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
	select SOC_INTEL_TIGERLAKE
	select SPI_FLASH_WINBOND
	select TPM_MEASURED_BOOT

config BOARD_STARLABS_STARBOOK_ADL_COMMON
	def_bool n
	select BOARD_ROMSIZE_KB_32768
	select BOARD_STARLABS_STARBOOK_SERIES
	select DRIVERS_INTEL_PMC
	select EC_STARLABS_KBL_LEVELS
	select EC_STARLABS_MAX_CHARGE
	select EC_STARLABS_MERLIN
	select EC_STARLABS_NEED_ITE_BIN
	select MEMORY_MAPPED_TPM
	select SOC_INTEL_ALDERLAKE
	select SOC_INTEL_ALDERLAKE_PCH_P
	select SOC_INTEL_CRASHLOG
	select SPI_FLASH_WINBOND
	select TPM_MEASURED_BOOT

config BOARD_STARLABS_STARBOOK_ADL
	select BOARD_STARLABS_STARBOOK_ADL_COMMON

config BOARD_STARLABS_STARBOOK_RPL
	select BOARD_STARLABS_STARBOOK_ADL_COMMON
	select DRIVERS_INTEL_USB4_RETIMER
	select SOC_INTEL_COMMON_BLOCK_TCSS
	select SOC_INTEL_ENABLE_USB4_PCIE_RESOURCES
	select SOC_INTEL_RAPTORLAKE

if BOARD_STARLABS_STARBOOK_SERIES

config CCD_PORT
	int
	default 6 if BOARD_STARLABS_LABTOP_CML
	default 4 if BOARD_STARLABS_STARBOOK_ADL || BOARD_STARLABS_STARBOOK_RPL
	default 3

config CMOS_DEFAULT_FILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/cmos.default" if BOARD_STARLABS_STARBOOK_TGL

config CMOS_LAYOUT_FILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/cmos.layout" if BOARD_STARLABS_STARBOOK_TGL

config CONSOLE_SERIAL
	default n if !EDK2_DEBUG

config D3COLD_SUPPORT
	default n

config DEVICETREE
	default "variants/\$(CONFIG_VARIANT_DIR)/devicetree.cb"

config DIMM_SPD_SIZE
	default 512

config DRIVER_TPM_SPI_CHIP
	default 2

config EC_GPE_SCI
	default 0x50 if BOARD_STARLABS_LABTOP_KBL || BOARD_STARLABS_LABTOP_CML
	default 0x6e

config EC_STARLABS_ADD_ITE_BIN
	default y if !BOARD_STARLABS_STARBOOK_RPL

config EC_STARLABS_ITE_BIN_PATH
	string
	depends on EC_STARLABS_NEED_ITE_BIN
	default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/\$(CONFIG_VARIANT_DIR)/ec.bin"

config EC_VARIANT_DIR
	default "kbl" if !EC_STARLABS_MERLIN && BOARD_STARLABS_LABTOP_KBL
	default "cml" if !EC_STARLABS_MERLIN && BOARD_STARLABS_LABTOP_CML
	default "merlin"

config EDK2_BOOTSPLASH_FILE
	string
	default "3rdparty/blobs/mainboard/starlabs/Logo.bmp"

config FMDFILE
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/vboot.fmd" if VBOOT
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/board.fmd"

config IFD_BIN_PATH
	string
	default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/\$(CONFIG_VARIANT_DIR)/flashdescriptor.bin"

config MAINBOARD_DIR
	default "starlabs/starbook"

config MAINBOARD_FAMILY
	string
	default "L3" if BOARD_STARLABS_LABTOP_KBL
	default "L4" if BOARD_STARLABS_LABTOP_CML
	default "B5" if BOARD_STARLABS_STARBOOK_TGL
	default "B6-I" if BOARD_STARLABS_STARBOOK_ADL
	default "B62-I" if BOARD_STARLABS_STARBOOK_RPL

config MAINBOARD_PART_NUMBER
	default "LabTop Mk III" if BOARD_STARLABS_LABTOP_KBL
	default "LabTop Mk IV" if BOARD_STARLABS_LABTOP_CML
	default "StarBook Mk V" if BOARD_STARLABS_STARBOOK_TGL
	default "StarBook Mk VI" if BOARD_STARLABS_STARBOOK_ADL || BOARD_STARLABS_STARBOOK_RPL

config MAINBOARD_SMBIOS_PRODUCT_NAME
	default "LabTop" if BOARD_STARLABS_LABTOP_KBL || BOARD_STARLABS_LABTOP_CML
	default "StarBook"

config ME_BIN_PATH
	string
	default "3rdparty/blobs/mainboard/\$(MAINBOARDDIR)/\$(CONFIG_VARIANT_DIR)/intel_me.bin"

config POWER_STATE_DEFAULT_ON_AFTER_FAILURE
	default n

config SOC_INTEL_CSE_SEND_EOP_EARLY
	default n if BOARD_STARLABS_STARBOOK_ADL || BOARD_STARLABS_STARBOOK_RPL

config UART_FOR_CONSOLE
	default 0 if BOARD_STARLABS_STARBOOK_ADL || BOARD_STARLABS_STARBOOK_RPL
	default 2

config USE_PM_ACPI_TIMER
	default n if BOARD_STARLABS_STARBOOK_TGL || BOARD_STARLABS_STARBOOK_ADL || BOARD_STARLABS_STARBOOK_RPL

config VBOOT
	select VBOOT_VBNV_FLASH

config VARIANT_DIR
	default "kbl" if BOARD_STARLABS_LABTOP_KBL
	default "cml" if BOARD_STARLABS_LABTOP_CML
	default "tgl" if BOARD_STARLABS_STARBOOK_TGL
	default "adl" if BOARD_STARLABS_STARBOOK_ADL
	default "rpl" if BOARD_STARLABS_STARBOOK_RPL

endif
