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

config BOARD_CLEVO_KBLU_COMMON
	def_bool n
	select BOARD_ROMSIZE_KB_8192
	select EC_ACPI
	select HAVE_ACPI_RESUME
	select HAVE_ACPI_TABLES
#	select HAVE_CMOS_DEFAULT
	select INTEL_GMA_HAVE_VBT
	select INTEL_LPSS_UART_FOR_CONSOLE
	select MAINBOARD_HAS_LIBGFXINIT
	select MAINBOARD_HAS_LPC_TPM
	select MAINBOARD_HAS_TPM2
	select NO_UART_ON_SUPERIO
	select SOC_INTEL_COMMON_BLOCK_HDA_VERB
	select SOC_INTEL_KABYLAKE
	select SPD_READ_BY_WORD
	select SYSTEM_TYPE_LAPTOP

config BOARD_CLEVO_N130WU_OPTIONS
	bool
	select BOARD_CLEVO_KBLU_COMMON

if BOARD_CLEVO_KBLU_COMMON

config VBOOT
	select VBOOT_NO_BOARD_SUPPORT
	select GBB_FLAG_DISABLE_LID_SHUTDOWN
	select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
	select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
	select GBB_FLAG_DISABLE_FWMP

config MAINBOARD_DIR
	string
	default "clevo/kbl-u"

config VARIANT_DIR
	string
	default "n13xwu" if BOARD_CLEVO_N130WU

config MAINBOARD_PART_NUMBER
	string
	default "N130WU" if BOARD_CLEVO_N130WU

config CBFS_SIZE
	hex
	default 0x600000 if BOARD_CLEVO_N130WU

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

config FMDFILE
	string
	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/variants/\$(CONFIG_VARIANT_DIR)/fmds/vboot-ro.fmd"	if VBOOT && !VBOOT_SLOTS_RW_A
	# TODO
#	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/fmds/vboot-roa.fmd"	if VBOOT_SLOTS_RW_A && !VBOOT_SLOTS_RW_AB
#	default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/fmds/vboot-roab.fmd"	if VBOOT_SLOTS_RW_AB

config DIMM_MAX
	int
	default 2

config DIMM_SPD_SIZE
	int
	default 512

config VGA_BIOS_ID
	string
	default "8086,5917" if BOARD_CLEVO_N130WU

config PXE_ROM_ID
	string
	default "10ec,8168"

config UART_FOR_CONSOLE
	int
	default 2

config POST_DEVICE
	bool
	default n

config CONSOLE_POST
	bool
	default y

config LINEAR_FRAMEBUFFER_MAX_WIDTH
	int
	default 1920

config LINEAR_FRAMEBUFFER_MAX_HEIGHT
	int
	default 1080

endif
