if PLATFORM_USES_FSP2_0

config DISPLAY_FSP_CALLS_AND_STATUS
	bool "Display the FSP calls and status"
	default n
	help
	  Display the FSP call entry point and parameters prior to calling FSP
	  and display the status upon return from FSP.

config DISPLAY_FSP_HEADER
	bool "Display the FSP header"
	default n
	help
	  Display the FSP header information when the FSP file is found.

config DISPLAY_HOBS
	bool "Display the hand-off-blocks"
	default n
	help
	  Display the FSP HOBs which are provided for coreboot.

config DISPLAY_UPD_DATA
	bool "Display UPD data"
	default n
	help
	  Display the user specified product data prior to memory
	  initialization.

config VERIFY_HOBS
	bool "Verify the FSP hand-off-blocks"
	default n
	help
	  Verify that the HOBs required by coreboot are returned by FSP and
	  that the resource HOBs are in the correct order and position.

config DISPLAY_FSP_VERSION_INFO
	bool "Display Firmware Ingredient Version Information"
	help
	  Select this option to display Firmware version information.

config DISPLAY_FSP_VERSION_INFO_2
	bool
	default n
	help
	  Select this option to display Firmware version information
	  using new header 'FirmwareVersionInfo.h'.

config ENABLE_FSP_ERROR_INFO
	bool "Enable FSP Error Information"
	default n
	depends on PLATFORM_USES_FSP2_1
	help
	  Select this option to enable FSP Error information. FSP detects certain errors
	  and notifies coreboot of a fatal error occurring during the execution of the FSP.
	  Although it's defined in FSP v2.1 but has only been verified on Intel Xeon-SP
	  Sapphire Rapids.

config HAVE_GPIO_SNAPSHOT_VERIFY_SUPPORT
	bool
	default n
	help
	  Select this option if platform provides support for GPIO
	  config snapshot and verify callbacks: `gpio_snapshot()`
	  and `gpio_verify_snapshot()`

config CHECK_GPIO_CONFIG_CHANGES
	bool "Check GPIO config changes across calls to FSP-S"
	depends on HAVE_GPIO_SNAPSHOT_VERIFY_SUPPORT
	help
	  Select this option to identify if any GPIOs are re-configured
	  by FSP-S differently than the mainboard configuration. This
	  requires platform support to snapshot and verify that config
	  matches snapshot.

endif # PLATFORM_USES_FSP2_0
