# SPDX-License-Identifier: GPL-2.0+
#
# Copyright 2018 Google LLC
#

config CHROMEOS_VBOOT
	bool "Enable Chromium OS verified boot support"
	imply BINMAN if !SYS_COREBOOT
	imply BLOBLIST
	imply CHROMEOS_SPI
	imply CROS_EC
	imply CROS_EC_LPC if X86
	imply CROS_FLAG
	imply CROS_FLAG_GPIO
	imply CROS_FLAG_CONST
	imply CROS_FLAG_KEY
	imply FWSTORE_SPI_FLASH
	imply LOG
	imply LZ4
	imply NVDATA_CMOS if X86
	imply NVDATA_CROS_EC if SANDBOX
	imply NVDATA_TPM
	imply SOUND
	imply SPL_LZ4
	imply TPM
	imply TPM_V2

if CHROMEOS_VBOOT

config VBOOT_DISABLE_DEV_ON_RECOVERY
	bool "Disable developer mode when going into recovery"
	depends on CHROMEOS

config VBOOT_DEBUG
	bool "Enable debugging for vboot"
	depends on CHROMEOS
	default y

config SPL_CHROMEOS
	bool "Enable Chromium OS verified boot support in SPL"
	depends on CHROMEOS
	select SUPPORT_SPL
	imply SPL
	imply SPL_BLOBLIST
	imply SPL_BOARD_INIT
	imply SPL_CROS_EC
	imply SPL_ENV_SUPPORT
	imply SPL_DM
	imply SPL_DRIVERS_MISC
	imply SPL_FWSTORE_SPI_FLASH
	imply SPL_GPIO
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_LOG
	imply SPL_OF_CONTROL
	imply SPL_REGMAP
	imply SPL_SEPARATE_BSS
	imply SPL_SERIAL_SUPPORT
	imply SPL_SPI_FLASH_SUPPORT
	imply SPL_SPI_SUPPORT
	imply SPL_SYSCON
	imply SPL_TIMER

config TPL_CHROMEOS
	bool "Enable Chromium OS verified boot support in TPL"
	depends on CHROMEOS
	select SUPPORT_TPL
	imply TPL
	imply TPL_BLOBLIST
	imply TPL_BOARD_INIT
	imply TPL_CROS_EC
	imply TPL_DM
	imply TPL_DM_KEYBOARD
	imply TPL_DRIVERS_MISC
	imply TPL_GPIO
	imply TPL_HASH_SUPPORT
	imply TPL_INPUT
	imply TPL_LIBCOMMON_SUPPORT
	imply TPL_LIBGENERIC_SUPPORT
	imply TPL_LOG
	imply TPL_NVDATA_TPM
	imply TPL_OF_CONTROL
	imply TPL_REGMAP
	imply TPL_SERIAL_SUPPORT
	imply TPL_SYSCON
	imply TPL_SYS_MALLOC_SIMPLE
	imply TPL_TIMER
	imply TPL_TPM

config VPL_CHROMEOS
	bool "Enable Chromium OS verified boot support in VPL"
	depends on CHROMEOS
	select SUPPORT_VPL
	imply VPL
	imply VPL_BLOBLIST
	imply VPL_BOARD_INIT
	imply VPL_CROS_EC
	imply VPL_CROS_EC_LPC if X86
	imply VPL_DM
	imply VPL_DM_KEYBOARD
	imply VPL_DRIVERS_MISC
	imply VPL_ENV_SUPPORT
	imply VPL_FWSTORE_SPI_FLASH
	imply VPL_HASH_SUPPORT
	imply VPL_GPIO
	imply VPL_HANDOFF
	imply VPL_I2C_SUPPORT
	imply VPL_INPUT
	imply VPL_LIBCOMMON_SUPPORT
	imply VPL_LIBGENERIC_SUPPORT
	imply VPL_LOG
	imply VPL_NVDATA_CMOS if X86
	imply VPL_NVDATA_TPM
	imply VPL_OF_CONTROL
	imply VPL_PINCTRL
	imply VPL_REGMAP
	imply VPL_SERIAL_SUPPORT
	imply VPL_SPI_FLASH_SUPPORT
	imply VPL_SPI_SUPPORT
	imply VPL_SYS_MALLOC_SIMPLE
	imply VPL_SYSCON
	imply VPL_TIMER
	imply VPL_TPM

config TPL_CHROMEOS_VBOOT_A
	bool "Run vboot stage A (SPL selection) in TPL"
	default y if TPL && !VPL
	imply TPL_FWSTORE_SPI_FLASH
	imply TPL_NVDATA_TPM
	imply TPL_TPM

config VPL_CHROMEOS_VBOOT_A
	bool "Run vboot stage A (SPL selection) in VPL"
	default y if VPL
	imply VPL_FWSTORE_SPI_FLASH
	imply VPL_NVDATA_TPM
	imply VPL_TPM

config SPL_CHROMEOS_VBOOT_B
	bool "Run vboot stage B (U-Boot selection) in SPL"
	default y

config CHROMEOS_VBOOT_C
	bool "Run vboot stage C (kernel selection) in U-Boot proper"
	default y

choice
	prompt "Select TPM version to use for vboot library"
	help
	  The vboot library must be built for either TPM1 or TPM2. U-Boot may
	  support both, but U-Boot's TPM library is not actually used with
	  vboot, since it has its own library.

	  This affects the messages sent by the vboot library.

config CHROMEOS_TPM2
	bool "TPM2"
	help
	  Select this to use a version 2 TPM. This should be used for hardware
	  devices after about 2015, when Chrome OS switched over to using the
	  Cr50.

config CHROMEOS_TPM1
	bool "TPM1"
	help
	  Select this to use a version 1 TPM. This should be used for sandbox
	  since it currently has a better emulator for version 1 than version 2.
	  The sandbox emulator is tpm_tis_sandbox.c and it handles enough
	  messages to get through vboot successfully.

endchoice # "TPM version"

config CHROMEOS_COREBOOT
	bool "Allow booting from coreboot"
	help
	  In some cases it is desirable to boot U-Boot from coreboot and have
	  the verified boot flow continue. Enable this to provide access to CBFS
	  files and the vboot context, as used by coreboot.

config CHROMEOS_TEST
	bool "Enable Chromium OS tests"
	help
	  There are currently no tests specifically for the Chromium OS boot
	  flow, other than the large functional test of running it in sandbox.
	  This option currently does nothing, but the intention is that it will
	  enable building unit tests for each piece of functionality.

source "cros/cmd/Kconfig"
source "cros/flag/Kconfig"
source "cros/fwstore/Kconfig"
source "cros/nvdata/Kconfig"

endif # CHROMEOS_VBOOT
