18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# TPM device configuration 48c2ecf20Sopenharmony_ci# 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_cimenuconfig TCG_TPM 78c2ecf20Sopenharmony_ci tristate "TPM Hardware Support" 88c2ecf20Sopenharmony_ci depends on HAS_IOMEM 98c2ecf20Sopenharmony_ci imply SECURITYFS 108c2ecf20Sopenharmony_ci select CRYPTO 118c2ecf20Sopenharmony_ci select CRYPTO_HASH_INFO 128c2ecf20Sopenharmony_ci help 138c2ecf20Sopenharmony_ci If you have a TPM security chip in your system, which 148c2ecf20Sopenharmony_ci implements the Trusted Computing Group's specification, 158c2ecf20Sopenharmony_ci say Yes and it will be accessible from within Linux. For 168c2ecf20Sopenharmony_ci more information see <http://www.trustedcomputinggroup.org>. 178c2ecf20Sopenharmony_ci An implementation of the Trusted Software Stack (TSS), the 188c2ecf20Sopenharmony_ci userspace enablement piece of the specification, can be 198c2ecf20Sopenharmony_ci obtained at: <http://sourceforge.net/projects/trousers>. To 208c2ecf20Sopenharmony_ci compile this driver as a module, choose M here; the module 218c2ecf20Sopenharmony_ci will be called tpm. If unsure, say N. 228c2ecf20Sopenharmony_ci Notes: 238c2ecf20Sopenharmony_ci 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI 248c2ecf20Sopenharmony_ci and CONFIG_PNPACPI. 258c2ecf20Sopenharmony_ci 2) Without ACPI enabled, the BIOS event log won't be accessible, 268c2ecf20Sopenharmony_ci which is required to validate the PCR 0-7 values. 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciif TCG_TPM 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciconfig HW_RANDOM_TPM 318c2ecf20Sopenharmony_ci bool "TPM HW Random Number Generator support" 328c2ecf20Sopenharmony_ci depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m) 338c2ecf20Sopenharmony_ci default y 348c2ecf20Sopenharmony_ci help 358c2ecf20Sopenharmony_ci This setting exposes the TPM's Random Number Generator as a hwrng 368c2ecf20Sopenharmony_ci device. This allows the kernel to collect randomness from the TPM at 378c2ecf20Sopenharmony_ci boot, and provides the TPM randomines in /dev/hwrng. 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci If unsure, say Y. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciconfig TCG_TIS_CORE 428c2ecf20Sopenharmony_ci tristate 438c2ecf20Sopenharmony_ci help 448c2ecf20Sopenharmony_ci TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks 458c2ecf20Sopenharmony_ci into the TPM kernel APIs. Physical layers will register against it. 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciconfig TCG_TIS 488c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface" 498c2ecf20Sopenharmony_ci depends on X86 || OF 508c2ecf20Sopenharmony_ci select TCG_TIS_CORE 518c2ecf20Sopenharmony_ci help 528c2ecf20Sopenharmony_ci If you have a TPM security chip that is compliant with the 538c2ecf20Sopenharmony_ci TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 548c2ecf20Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 558c2ecf20Sopenharmony_ci within Linux. To compile this driver as a module, choose M here; 568c2ecf20Sopenharmony_ci the module will be called tpm_tis. 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciconfig TCG_TIS_SPI 598c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)" 608c2ecf20Sopenharmony_ci depends on SPI 618c2ecf20Sopenharmony_ci select TCG_TIS_CORE 628c2ecf20Sopenharmony_ci help 638c2ecf20Sopenharmony_ci If you have a TPM security chip which is connected to a regular, 648c2ecf20Sopenharmony_ci non-tcg SPI master (i.e. most embedded platforms) that is compliant with the 658c2ecf20Sopenharmony_ci TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO 668c2ecf20Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 678c2ecf20Sopenharmony_ci within Linux. To compile this driver as a module, choose M here; 688c2ecf20Sopenharmony_ci the module will be called tpm_tis_spi. 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ciconfig TCG_TIS_SPI_CR50 718c2ecf20Sopenharmony_ci bool "Cr50 SPI Interface" 728c2ecf20Sopenharmony_ci depends on TCG_TIS_SPI 738c2ecf20Sopenharmony_ci help 748c2ecf20Sopenharmony_ci If you have a H1 secure module running Cr50 firmware on SPI bus, 758c2ecf20Sopenharmony_ci say Yes and it will be accessible from within Linux. 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciconfig TCG_TIS_SYNQUACER 788c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)" 798c2ecf20Sopenharmony_ci depends on ARCH_SYNQUACER 808c2ecf20Sopenharmony_ci select TCG_TIS_CORE 818c2ecf20Sopenharmony_ci help 828c2ecf20Sopenharmony_ci If you have a TPM security chip that is compliant with the 838c2ecf20Sopenharmony_ci TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 848c2ecf20Sopenharmony_ci specification (TPM2.0) say Yes and it will be accessible from 858c2ecf20Sopenharmony_ci within Linux on Socionext SynQuacer platform. 868c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; 878c2ecf20Sopenharmony_ci the module will be called tpm_tis_synquacer. 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ciconfig TCG_TIS_I2C_ATMEL 908c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)" 918c2ecf20Sopenharmony_ci depends on I2C 928c2ecf20Sopenharmony_ci help 938c2ecf20Sopenharmony_ci If you have an Atmel I2C TPM security chip say Yes and it will be 948c2ecf20Sopenharmony_ci accessible from within Linux. 958c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; the module will 968c2ecf20Sopenharmony_ci be called tpm_tis_i2c_atmel. 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ciconfig TCG_TIS_I2C_INFINEON 998c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)" 1008c2ecf20Sopenharmony_ci depends on I2C 1018c2ecf20Sopenharmony_ci help 1028c2ecf20Sopenharmony_ci If you have a TPM security chip that is compliant with the 1038c2ecf20Sopenharmony_ci TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack 1048c2ecf20Sopenharmony_ci Specification 0.20 say Yes and it will be accessible from within 1058c2ecf20Sopenharmony_ci Linux. 1068c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; the module 1078c2ecf20Sopenharmony_ci will be called tpm_i2c_infineon. 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ciconfig TCG_TIS_I2C_NUVOTON 1108c2ecf20Sopenharmony_ci tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)" 1118c2ecf20Sopenharmony_ci depends on I2C 1128c2ecf20Sopenharmony_ci help 1138c2ecf20Sopenharmony_ci If you have a TPM security chip with an I2C interface from 1148c2ecf20Sopenharmony_ci Nuvoton Technology Corp. say Yes and it will be accessible 1158c2ecf20Sopenharmony_ci from within Linux. 1168c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; the module 1178c2ecf20Sopenharmony_ci will be called tpm_i2c_nuvoton. 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ciconfig TCG_NSC 1208c2ecf20Sopenharmony_ci tristate "National Semiconductor TPM Interface" 1218c2ecf20Sopenharmony_ci depends on X86 1228c2ecf20Sopenharmony_ci help 1238c2ecf20Sopenharmony_ci If you have a TPM security chip from National Semiconductor 1248c2ecf20Sopenharmony_ci say Yes and it will be accessible from within Linux. To 1258c2ecf20Sopenharmony_ci compile this driver as a module, choose M here; the module 1268c2ecf20Sopenharmony_ci will be called tpm_nsc. 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ciconfig TCG_ATMEL 1298c2ecf20Sopenharmony_ci tristate "Atmel TPM Interface" 1308c2ecf20Sopenharmony_ci depends on PPC64 || HAS_IOPORT_MAP 1318c2ecf20Sopenharmony_ci help 1328c2ecf20Sopenharmony_ci If you have a TPM security chip from Atmel say Yes and it 1338c2ecf20Sopenharmony_ci will be accessible from within Linux. To compile this driver 1348c2ecf20Sopenharmony_ci as a module, choose M here; the module will be called tpm_atmel. 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciconfig TCG_INFINEON 1378c2ecf20Sopenharmony_ci tristate "Infineon Technologies TPM Interface" 1388c2ecf20Sopenharmony_ci depends on PNP 1398c2ecf20Sopenharmony_ci help 1408c2ecf20Sopenharmony_ci If you have a TPM security chip from Infineon Technologies 1418c2ecf20Sopenharmony_ci (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it 1428c2ecf20Sopenharmony_ci will be accessible from within Linux. 1438c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; the module 1448c2ecf20Sopenharmony_ci will be called tpm_infineon. 1458c2ecf20Sopenharmony_ci Further information on this driver and the supported hardware 1468c2ecf20Sopenharmony_ci can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ciconfig TCG_IBMVTPM 1498c2ecf20Sopenharmony_ci tristate "IBM VTPM Interface" 1508c2ecf20Sopenharmony_ci depends on PPC_PSERIES 1518c2ecf20Sopenharmony_ci help 1528c2ecf20Sopenharmony_ci If you have IBM virtual TPM (VTPM) support say Yes and it 1538c2ecf20Sopenharmony_ci will be accessible from within Linux. To compile this driver 1548c2ecf20Sopenharmony_ci as a module, choose M here; the module will be called tpm_ibmvtpm. 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciconfig TCG_XEN 1578c2ecf20Sopenharmony_ci tristate "XEN TPM Interface" 1588c2ecf20Sopenharmony_ci depends on TCG_TPM && XEN 1598c2ecf20Sopenharmony_ci select XEN_XENBUS_FRONTEND 1608c2ecf20Sopenharmony_ci help 1618c2ecf20Sopenharmony_ci If you want to make TPM support available to a Xen user domain, 1628c2ecf20Sopenharmony_ci say Yes and it will be accessible from within Linux. See 1638c2ecf20Sopenharmony_ci the manpages for xl, xl.conf, and docs/misc/vtpm.txt in 1648c2ecf20Sopenharmony_ci the Xen source repository for more details. 1658c2ecf20Sopenharmony_ci To compile this driver as a module, choose M here; the module 1668c2ecf20Sopenharmony_ci will be called xen-tpmfront. 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ciconfig TCG_CRB 1698c2ecf20Sopenharmony_ci tristate "TPM 2.0 CRB Interface" 1708c2ecf20Sopenharmony_ci depends on ACPI 1718c2ecf20Sopenharmony_ci help 1728c2ecf20Sopenharmony_ci If you have a TPM security chip that is compliant with the 1738c2ecf20Sopenharmony_ci TCG CRB 2.0 TPM specification say Yes and it will be accessible 1748c2ecf20Sopenharmony_ci from within Linux. To compile this driver as a module, choose 1758c2ecf20Sopenharmony_ci M here; the module will be called tpm_crb. 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ciconfig TCG_VTPM_PROXY 1788c2ecf20Sopenharmony_ci tristate "VTPM Proxy Interface" 1798c2ecf20Sopenharmony_ci depends on TCG_TPM 1808c2ecf20Sopenharmony_ci help 1818c2ecf20Sopenharmony_ci This driver proxies for an emulated TPM (vTPM) running in userspace. 1828c2ecf20Sopenharmony_ci A device /dev/vtpmx is provided that creates a device pair 1838c2ecf20Sopenharmony_ci /dev/vtpmX and a server-side file descriptor on which the vTPM 1848c2ecf20Sopenharmony_ci can receive commands. 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ciconfig TCG_FTPM_TEE 1878c2ecf20Sopenharmony_ci tristate "TEE based fTPM Interface" 1888c2ecf20Sopenharmony_ci depends on TEE && OPTEE 1898c2ecf20Sopenharmony_ci help 1908c2ecf20Sopenharmony_ci This driver proxies for firmware TPM running in TEE. 1918c2ecf20Sopenharmony_ci 1928c2ecf20Sopenharmony_cisource "drivers/char/tpm/st33zp24/Kconfig" 1938c2ecf20Sopenharmony_ciendif # TCG_TPM 194