#
# TPM subsystem configuration
#

menu "TPM support"

comment "Please select only one TPM revision"
	depends on TPM_V1 && TPM_V2

config TPM_V1
	bool "TPMv1.x support"
	depends on TPM
	default y
	help
	  Major TPM versions are not compatible at all, choose either
	  one or the other. This option enables TPMv1.x drivers/commands.

if TPM_V1 && !TPM_V2

config TPM_TIS_SANDBOX
	bool "Enable sandbox TPM driver"
	depends on TPM_V1 && SANDBOX
	help
	  This driver emulates a TPMv1.x, providing access to base functions
	  such as reading and writing TPM private data. This is enough to
	  support Chrome OS verified boot. Extend functionality is not
	  implemented.

config TPM_ATMEL_TWI
	bool "Enable Atmel TWI TPM device driver"
	depends on TPM_V1
	help
	  This driver supports an Atmel TPM device connected on the I2C bus.
	  The usual tpm operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol

config TPM_TIS_INFINEON
	bool "Enable support for Infineon SLB9635/45 TPMs on I2C"
	depends on TPM_V1 && DM_I2C
	help
	  This driver supports Infineon TPM devices connected on the I2C bus.
	  The usual tpm operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol

config TPM_TIS_I2C_BURST_LIMITATION
	bool "Enable I2C burst length limitation"
	depends on TPM_TIS_INFINEON
	help
	  Some broken TPMs have a limitation on the number of bytes they can
	  receive in one message. Enable this option to allow you to set this
	  option. The can allow a broken TPM to be used by splitting messages
	  into separate pieces.

config TPM_TIS_I2C_BURST_LIMITATION_LEN
	int "Length"
	depends on TPM_TIS_I2C_BURST_LIMITATION
	help
	  Use this to set the burst limitation length

config TPM_TIS_LPC
	bool "Enable support for Infineon SLB9635/45 TPMs on LPC"
	depends on TPM_V1 && X86
	select TPM_DRIVER_SELECTED
	help
	  This driver supports Infineon TPM devices connected on the LPC bus.
	  The usual tpm operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol

config TPM_AUTH_SESSIONS
	bool "Enable TPM authentication session support"
	depends on TPM_V1
	help
	  Enable support for authorised (AUTH1) commands as specified in the
	  TCG Main Specification 1.2. OIAP-authorised versions of the commands
	  TPM_LoadKey2 and TPM_GetPubKey are provided. Both features are
	  available using the 'tpm' command, too.

config TPM_ST33ZP24_I2C
	bool "STMicroelectronics ST33ZP24 I2C TPM"
	depends on TPM_V1 && DM_I2C
	---help---
	  This driver supports STMicroelectronics TPM devices connected on the I2C bus.
	  The usual tpm operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol

config TPM_ST33ZP24_SPI
	bool "STMicroelectronics ST33ZP24 SPI TPM"
	depends on TPM_V1 && DM_SPI
	---help---
	  This driver supports STMicroelectronics TPM devices connected on the SPI bus.
	  The usual tpm operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol

config TPM_FLUSH_RESOURCES
	bool "Enable TPM resource flushing support"
	depends on TPM_V1
	help
	  Enable support to flush specific resources (e.g. keys) from the TPM.
	  The functionality is available via the 'tpm' command as well.

config TPM_LOAD_KEY_BY_SHA1
	bool "Enable TPM key loading by SHA1 support"
	depends on TPM_V1
	help
	  Enable support to load keys into the TPM by identifying
	  their parent via the public key's SHA1 hash.
	  The functionality is available via the 'tpm' command as well.

config TPM_LIST_RESOURCES
	bool "Enable TPM resource listing support"
	depends on TPM_V1
	help
	  Enable support to list specific resources (e.g. keys) within the TPM.
	  The functionality is available via the 'tpm' command as well.

endif # TPM_V1

config TPM_V2
	bool "TPMv2.x support"
	depends on TPM
	help
	  Major TPM versions are not compatible at all, choose either
	  one or the other. This option enables TPMv2.x drivers/commands.

if TPM_V2 && !TPM_V1

config TPM2_TIS_SANDBOX
	bool "Enable sandbox TPMv2.x driver"
	depends on TPM_V2 && SANDBOX
	select TPM_DRIVER_SELECTED
	help
	  This driver emulates a TPMv2.x, providing access to base functions
	  such as basic configuration, PCR extension and PCR read. Extended
	  functionalities are not implemented.

config TPM2_TIS_SPI
	bool "Enable support for TPMv2.x SPI chips"
	depends on TPM_V2 && DM_SPI
	select TPM_DRIVER_SELECTED
	help
	  This driver supports TPMv2.x devices connected on the SPI bus.
	  The usual TPM operations and the 'tpm' command can be used to talk
	  to the device using the standard TPM Interface Specification (TIS)
	  protocol.

endif # TPM_V2

endmenu
