162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci# 362306a36Sopenharmony_ci# TPM device configuration 462306a36Sopenharmony_ci# 562306a36Sopenharmony_ci 662306a36Sopenharmony_cimenuconfig TCG_TPM 762306a36Sopenharmony_ci tristate "TPM Hardware Support" 862306a36Sopenharmony_ci depends on HAS_IOMEM 962306a36Sopenharmony_ci imply SECURITYFS 1062306a36Sopenharmony_ci select CRYPTO 1162306a36Sopenharmony_ci select CRYPTO_HASH_INFO 1262306a36Sopenharmony_ci help 1362306a36Sopenharmony_ci If you have a TPM security chip in your system, which 1462306a36Sopenharmony_ci implements the Trusted Computing Group's specification, 1562306a36Sopenharmony_ci say Yes and it will be accessible from within Linux. For 1662306a36Sopenharmony_ci more information see <http://www.trustedcomputinggroup.org>. 1762306a36Sopenharmony_ci An implementation of the Trusted Software Stack (TSS), the 1862306a36Sopenharmony_ci userspace enablement piece of the specification, can be 1962306a36Sopenharmony_ci obtained at: <http://sourceforge.net/projects/trousers>. To 2062306a36Sopenharmony_ci compile this driver as a module, choose M here; the module 2162306a36Sopenharmony_ci will be called tpm. If unsure, say N. 2262306a36Sopenharmony_ci Notes: 2362306a36Sopenharmony_ci 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI 2462306a36Sopenharmony_ci and CONFIG_PNPACPI. 2562306a36Sopenharmony_ci 2) Without ACPI enabled, the BIOS event log won't be accessible, 2662306a36Sopenharmony_ci which is required to validate the PCR 0-7 values. 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciif TCG_TPM 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciconfig HW_RANDOM_TPM 3162306a36Sopenharmony_ci bool "TPM HW Random Number Generator support" 3262306a36Sopenharmony_ci depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m) 3362306a36Sopenharmony_ci default y 3462306a36Sopenharmony_ci help 3562306a36Sopenharmony_ci This setting exposes the TPM's Random Number Generator as a hwrng 3662306a36Sopenharmony_ci device. This allows the kernel to collect randomness from the TPM at 3762306a36Sopenharmony_ci boot, and provides the TPM randomines in /dev/hwrng. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci If unsure, say Y. 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ciconfig TCG_TIS_CORE 4262306a36Sopenharmony_ci tristate 4362306a36Sopenharmony_ci help 4462306a36Sopenharmony_ci TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks 4562306a36Sopenharmony_ci into the TPM kernel APIs. Physical layers will register against it. 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ciconfig TCG_TIS 4862306a36Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface" 4962306a36Sopenharmony_ci depends on X86 || OF 5062306a36Sopenharmony_ci select TCG_TIS_CORE 5162306a36Sopenharmony_ci help 5262306a36Sopenharmony_ci If you have a TPM security chip that is compliant with the 5362306a36Sopenharmony_ci TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 5462306a36Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 5562306a36Sopenharmony_ci within Linux. To compile this driver as a module, choose M here; 5662306a36Sopenharmony_ci the module will be called tpm_tis. 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciconfig TCG_TIS_SPI 5962306a36Sopenharmony_ci tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)" 6062306a36Sopenharmony_ci depends on SPI 6162306a36Sopenharmony_ci select TCG_TIS_CORE 6262306a36Sopenharmony_ci help 6362306a36Sopenharmony_ci If you have a TPM security chip which is connected to a regular, 6462306a36Sopenharmony_ci non-tcg SPI master (i.e. most embedded platforms) that is compliant with the 6562306a36Sopenharmony_ci TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO 6662306a36Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 6762306a36Sopenharmony_ci within Linux. To compile this driver as a module, choose M here; 6862306a36Sopenharmony_ci the module will be called tpm_tis_spi. 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciconfig TCG_TIS_SPI_CR50 7162306a36Sopenharmony_ci bool "Cr50 SPI Interface" 7262306a36Sopenharmony_ci depends on TCG_TIS_SPI 7362306a36Sopenharmony_ci help 7462306a36Sopenharmony_ci If you have a H1 secure module running Cr50 firmware on SPI bus, 7562306a36Sopenharmony_ci say Yes and it will be accessible from within Linux. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciconfig TCG_TIS_I2C 7862306a36Sopenharmony_ci tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (I2C - generic)" 7962306a36Sopenharmony_ci depends on I2C 8062306a36Sopenharmony_ci select CRC_CCITT 8162306a36Sopenharmony_ci select TCG_TIS_CORE 8262306a36Sopenharmony_ci help 8362306a36Sopenharmony_ci If you have a TPM security chip, compliant with the TCG TPM PTP 8462306a36Sopenharmony_ci (I2C interface) specification and connected to an I2C bus master, 8562306a36Sopenharmony_ci say Yes and it will be accessible from within Linux. 8662306a36Sopenharmony_ci To compile this driver as a module, choose M here; 8762306a36Sopenharmony_ci the module will be called tpm_tis_i2c. 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ciconfig TCG_TIS_SYNQUACER 9062306a36Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)" 9162306a36Sopenharmony_ci depends on ARCH_SYNQUACER || COMPILE_TEST 9262306a36Sopenharmony_ci select TCG_TIS_CORE 9362306a36Sopenharmony_ci help 9462306a36Sopenharmony_ci If you have a TPM security chip that is compliant with the 9562306a36Sopenharmony_ci TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 9662306a36Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 9762306a36Sopenharmony_ci within Linux on Socionext SynQuacer platform. 9862306a36Sopenharmony_ci To compile this driver as a module, choose M here; 9962306a36Sopenharmony_ci the module will be called tpm_tis_synquacer. 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciconfig TCG_TIS_I2C_CR50 10262306a36Sopenharmony_ci tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)" 10362306a36Sopenharmony_ci depends on I2C 10462306a36Sopenharmony_ci help 10562306a36Sopenharmony_ci This is a driver for the Google cr50 I2C TPM interface which is a 10662306a36Sopenharmony_ci custom microcontroller and requires a custom i2c protocol interface 10762306a36Sopenharmony_ci to handle the limitations of the hardware. To compile this driver 10862306a36Sopenharmony_ci as a module, choose M here; the module will be called tcg_tis_i2c_cr50. 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciconfig TCG_TIS_I2C_ATMEL 11162306a36Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)" 11262306a36Sopenharmony_ci depends on I2C 11362306a36Sopenharmony_ci help 11462306a36Sopenharmony_ci If you have an Atmel I2C TPM security chip say Yes and it will be 11562306a36Sopenharmony_ci accessible from within Linux. 11662306a36Sopenharmony_ci To compile this driver as a module, choose M here; the module will 11762306a36Sopenharmony_ci be called tpm_tis_i2c_atmel. 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ciconfig TCG_TIS_I2C_INFINEON 12062306a36Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)" 12162306a36Sopenharmony_ci depends on I2C 12262306a36Sopenharmony_ci help 12362306a36Sopenharmony_ci If you have a TPM security chip that is compliant with the 12462306a36Sopenharmony_ci TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack 12562306a36Sopenharmony_ci Specification 0.20 say Yes and it will be accessible from within 12662306a36Sopenharmony_ci Linux. 12762306a36Sopenharmony_ci To compile this driver as a module, choose M here; the module 12862306a36Sopenharmony_ci will be called tpm_i2c_infineon. 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciconfig TCG_TIS_I2C_NUVOTON 13162306a36Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)" 13262306a36Sopenharmony_ci depends on I2C 13362306a36Sopenharmony_ci help 13462306a36Sopenharmony_ci If you have a TPM security chip with an I2C interface from 13562306a36Sopenharmony_ci Nuvoton Technology Corp. say Yes and it will be accessible 13662306a36Sopenharmony_ci from within Linux. 13762306a36Sopenharmony_ci To compile this driver as a module, choose M here; the module 13862306a36Sopenharmony_ci will be called tpm_i2c_nuvoton. 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ciconfig TCG_NSC 14162306a36Sopenharmony_ci tristate "National Semiconductor TPM Interface" 14262306a36Sopenharmony_ci depends on X86 14362306a36Sopenharmony_ci help 14462306a36Sopenharmony_ci If you have a TPM security chip from National Semiconductor 14562306a36Sopenharmony_ci say Yes and it will be accessible from within Linux. To 14662306a36Sopenharmony_ci compile this driver as a module, choose M here; the module 14762306a36Sopenharmony_ci will be called tpm_nsc. 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ciconfig TCG_ATMEL 15062306a36Sopenharmony_ci tristate "Atmel TPM Interface" 15162306a36Sopenharmony_ci depends on PPC64 || HAS_IOPORT_MAP 15262306a36Sopenharmony_ci help 15362306a36Sopenharmony_ci If you have a TPM security chip from Atmel say Yes and it 15462306a36Sopenharmony_ci will be accessible from within Linux. To compile this driver 15562306a36Sopenharmony_ci as a module, choose M here; the module will be called tpm_atmel. 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciconfig TCG_INFINEON 15862306a36Sopenharmony_ci tristate "Infineon Technologies TPM Interface" 15962306a36Sopenharmony_ci depends on PNP 16062306a36Sopenharmony_ci help 16162306a36Sopenharmony_ci If you have a TPM security chip from Infineon Technologies 16262306a36Sopenharmony_ci (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it 16362306a36Sopenharmony_ci will be accessible from within Linux. 16462306a36Sopenharmony_ci To compile this driver as a module, choose M here; the module 16562306a36Sopenharmony_ci will be called tpm_infineon. 16662306a36Sopenharmony_ci Further information on this driver and the supported hardware 16762306a36Sopenharmony_ci can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ciconfig TCG_IBMVTPM 17062306a36Sopenharmony_ci tristate "IBM VTPM Interface" 17162306a36Sopenharmony_ci depends on PPC_PSERIES 17262306a36Sopenharmony_ci help 17362306a36Sopenharmony_ci If you have IBM virtual TPM (VTPM) support say Yes and it 17462306a36Sopenharmony_ci will be accessible from within Linux. To compile this driver 17562306a36Sopenharmony_ci as a module, choose M here; the module will be called tpm_ibmvtpm. 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ciconfig TCG_XEN 17862306a36Sopenharmony_ci tristate "XEN TPM Interface" 17962306a36Sopenharmony_ci depends on TCG_TPM && XEN 18062306a36Sopenharmony_ci select XEN_XENBUS_FRONTEND 18162306a36Sopenharmony_ci help 18262306a36Sopenharmony_ci If you want to make TPM support available to a Xen user domain, 18362306a36Sopenharmony_ci say Yes and it will be accessible from within Linux. See 18462306a36Sopenharmony_ci the manpages for xl, xl.conf, and docs/misc/vtpm.txt in 18562306a36Sopenharmony_ci the Xen source repository for more details. 18662306a36Sopenharmony_ci To compile this driver as a module, choose M here; the module 18762306a36Sopenharmony_ci will be called xen-tpmfront. 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ciconfig TCG_CRB 19062306a36Sopenharmony_ci tristate "TPM 2.0 CRB Interface" 19162306a36Sopenharmony_ci depends on ACPI 19262306a36Sopenharmony_ci help 19362306a36Sopenharmony_ci If you have a TPM security chip that is compliant with the 19462306a36Sopenharmony_ci TCG CRB 2.0 TPM specification say Yes and it will be accessible 19562306a36Sopenharmony_ci from within Linux. To compile this driver as a module, choose 19662306a36Sopenharmony_ci M here; the module will be called tpm_crb. 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ciconfig TCG_VTPM_PROXY 19962306a36Sopenharmony_ci tristate "VTPM Proxy Interface" 20062306a36Sopenharmony_ci depends on TCG_TPM 20162306a36Sopenharmony_ci help 20262306a36Sopenharmony_ci This driver proxies for an emulated TPM (vTPM) running in userspace. 20362306a36Sopenharmony_ci A device /dev/vtpmx is provided that creates a device pair 20462306a36Sopenharmony_ci /dev/vtpmX and a server-side file descriptor on which the vTPM 20562306a36Sopenharmony_ci can receive commands. 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ciconfig TCG_FTPM_TEE 20862306a36Sopenharmony_ci tristate "TEE based fTPM Interface" 20962306a36Sopenharmony_ci depends on TEE && OPTEE 21062306a36Sopenharmony_ci help 21162306a36Sopenharmony_ci This driver proxies for firmware TPM running in TEE. 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_cisource "drivers/char/tpm/st33zp24/Kconfig" 21462306a36Sopenharmony_ciendif # TCG_TPM 215