1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# TPM device configuration 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunmenuconfig TCG_TPM 7*4882a593Smuzhiyun tristate "TPM Hardware Support" 8*4882a593Smuzhiyun depends on HAS_IOMEM 9*4882a593Smuzhiyun imply SECURITYFS 10*4882a593Smuzhiyun select CRYPTO 11*4882a593Smuzhiyun select CRYPTO_HASH_INFO 12*4882a593Smuzhiyun help 13*4882a593Smuzhiyun If you have a TPM security chip in your system, which 14*4882a593Smuzhiyun implements the Trusted Computing Group's specification, 15*4882a593Smuzhiyun say Yes and it will be accessible from within Linux. For 16*4882a593Smuzhiyun more information see <http://www.trustedcomputinggroup.org>. 17*4882a593Smuzhiyun An implementation of the Trusted Software Stack (TSS), the 18*4882a593Smuzhiyun userspace enablement piece of the specification, can be 19*4882a593Smuzhiyun obtained at: <http://sourceforge.net/projects/trousers>. To 20*4882a593Smuzhiyun compile this driver as a module, choose M here; the module 21*4882a593Smuzhiyun will be called tpm. If unsure, say N. 22*4882a593Smuzhiyun Notes: 23*4882a593Smuzhiyun 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI 24*4882a593Smuzhiyun and CONFIG_PNPACPI. 25*4882a593Smuzhiyun 2) Without ACPI enabled, the BIOS event log won't be accessible, 26*4882a593Smuzhiyun which is required to validate the PCR 0-7 values. 27*4882a593Smuzhiyun 28*4882a593Smuzhiyunif TCG_TPM 29*4882a593Smuzhiyun 30*4882a593Smuzhiyunconfig HW_RANDOM_TPM 31*4882a593Smuzhiyun bool "TPM HW Random Number Generator support" 32*4882a593Smuzhiyun depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m) 33*4882a593Smuzhiyun default y 34*4882a593Smuzhiyun help 35*4882a593Smuzhiyun This setting exposes the TPM's Random Number Generator as a hwrng 36*4882a593Smuzhiyun device. This allows the kernel to collect randomness from the TPM at 37*4882a593Smuzhiyun boot, and provides the TPM randomines in /dev/hwrng. 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun If unsure, say Y. 40*4882a593Smuzhiyun 41*4882a593Smuzhiyunconfig TCG_TIS_CORE 42*4882a593Smuzhiyun tristate 43*4882a593Smuzhiyun help 44*4882a593Smuzhiyun TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks 45*4882a593Smuzhiyun into the TPM kernel APIs. Physical layers will register against it. 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunconfig TCG_TIS 48*4882a593Smuzhiyun tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface" 49*4882a593Smuzhiyun depends on X86 || OF 50*4882a593Smuzhiyun select TCG_TIS_CORE 51*4882a593Smuzhiyun help 52*4882a593Smuzhiyun If you have a TPM security chip that is compliant with the 53*4882a593Smuzhiyun TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 54*4882a593Smuzhiyun specification (TPM2.0) say Yes and it will be accessible from 55*4882a593Smuzhiyun within Linux. To compile this driver as a module, choose M here; 56*4882a593Smuzhiyun the module will be called tpm_tis. 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunconfig TCG_TIS_SPI 59*4882a593Smuzhiyun tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)" 60*4882a593Smuzhiyun depends on SPI 61*4882a593Smuzhiyun select TCG_TIS_CORE 62*4882a593Smuzhiyun help 63*4882a593Smuzhiyun If you have a TPM security chip which is connected to a regular, 64*4882a593Smuzhiyun non-tcg SPI master (i.e. most embedded platforms) that is compliant with the 65*4882a593Smuzhiyun TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO 66*4882a593Smuzhiyun specification (TPM2.0) say Yes and it will be accessible from 67*4882a593Smuzhiyun within Linux. To compile this driver as a module, choose M here; 68*4882a593Smuzhiyun the module will be called tpm_tis_spi. 69*4882a593Smuzhiyun 70*4882a593Smuzhiyunconfig TCG_TIS_SPI_CR50 71*4882a593Smuzhiyun bool "Cr50 SPI Interface" 72*4882a593Smuzhiyun depends on TCG_TIS_SPI 73*4882a593Smuzhiyun help 74*4882a593Smuzhiyun If you have a H1 secure module running Cr50 firmware on SPI bus, 75*4882a593Smuzhiyun say Yes and it will be accessible from within Linux. 76*4882a593Smuzhiyun 77*4882a593Smuzhiyunconfig TCG_TIS_SYNQUACER 78*4882a593Smuzhiyun tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)" 79*4882a593Smuzhiyun depends on ARCH_SYNQUACER 80*4882a593Smuzhiyun select TCG_TIS_CORE 81*4882a593Smuzhiyun help 82*4882a593Smuzhiyun If you have a TPM security chip that is compliant with the 83*4882a593Smuzhiyun TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 84*4882a593Smuzhiyun specification (TPM2.0) say Yes and it will be accessible from 85*4882a593Smuzhiyun within Linux on Socionext SynQuacer platform. 86*4882a593Smuzhiyun To compile this driver as a module, choose M here; 87*4882a593Smuzhiyun the module will be called tpm_tis_synquacer. 88*4882a593Smuzhiyun 89*4882a593Smuzhiyunconfig TCG_TIS_I2C_ATMEL 90*4882a593Smuzhiyun tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)" 91*4882a593Smuzhiyun depends on I2C 92*4882a593Smuzhiyun help 93*4882a593Smuzhiyun If you have an Atmel I2C TPM security chip say Yes and it will be 94*4882a593Smuzhiyun accessible from within Linux. 95*4882a593Smuzhiyun To compile this driver as a module, choose M here; the module will 96*4882a593Smuzhiyun be called tpm_tis_i2c_atmel. 97*4882a593Smuzhiyun 98*4882a593Smuzhiyunconfig TCG_TIS_I2C_INFINEON 99*4882a593Smuzhiyun tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)" 100*4882a593Smuzhiyun depends on I2C 101*4882a593Smuzhiyun help 102*4882a593Smuzhiyun If you have a TPM security chip that is compliant with the 103*4882a593Smuzhiyun TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack 104*4882a593Smuzhiyun Specification 0.20 say Yes and it will be accessible from within 105*4882a593Smuzhiyun Linux. 106*4882a593Smuzhiyun To compile this driver as a module, choose M here; the module 107*4882a593Smuzhiyun will be called tpm_i2c_infineon. 108*4882a593Smuzhiyun 109*4882a593Smuzhiyunconfig TCG_TIS_I2C_NUVOTON 110*4882a593Smuzhiyun tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)" 111*4882a593Smuzhiyun depends on I2C 112*4882a593Smuzhiyun help 113*4882a593Smuzhiyun If you have a TPM security chip with an I2C interface from 114*4882a593Smuzhiyun Nuvoton Technology Corp. say Yes and it will be accessible 115*4882a593Smuzhiyun from within Linux. 116*4882a593Smuzhiyun To compile this driver as a module, choose M here; the module 117*4882a593Smuzhiyun will be called tpm_i2c_nuvoton. 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunconfig TCG_NSC 120*4882a593Smuzhiyun tristate "National Semiconductor TPM Interface" 121*4882a593Smuzhiyun depends on X86 122*4882a593Smuzhiyun help 123*4882a593Smuzhiyun If you have a TPM security chip from National Semiconductor 124*4882a593Smuzhiyun say Yes and it will be accessible from within Linux. To 125*4882a593Smuzhiyun compile this driver as a module, choose M here; the module 126*4882a593Smuzhiyun will be called tpm_nsc. 127*4882a593Smuzhiyun 128*4882a593Smuzhiyunconfig TCG_ATMEL 129*4882a593Smuzhiyun tristate "Atmel TPM Interface" 130*4882a593Smuzhiyun depends on PPC64 || HAS_IOPORT_MAP 131*4882a593Smuzhiyun help 132*4882a593Smuzhiyun If you have a TPM security chip from Atmel say Yes and it 133*4882a593Smuzhiyun will be accessible from within Linux. To compile this driver 134*4882a593Smuzhiyun as a module, choose M here; the module will be called tpm_atmel. 135*4882a593Smuzhiyun 136*4882a593Smuzhiyunconfig TCG_INFINEON 137*4882a593Smuzhiyun tristate "Infineon Technologies TPM Interface" 138*4882a593Smuzhiyun depends on PNP 139*4882a593Smuzhiyun help 140*4882a593Smuzhiyun If you have a TPM security chip from Infineon Technologies 141*4882a593Smuzhiyun (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it 142*4882a593Smuzhiyun will be accessible from within Linux. 143*4882a593Smuzhiyun To compile this driver as a module, choose M here; the module 144*4882a593Smuzhiyun will be called tpm_infineon. 145*4882a593Smuzhiyun Further information on this driver and the supported hardware 146*4882a593Smuzhiyun can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 147*4882a593Smuzhiyun 148*4882a593Smuzhiyunconfig TCG_IBMVTPM 149*4882a593Smuzhiyun tristate "IBM VTPM Interface" 150*4882a593Smuzhiyun depends on PPC_PSERIES 151*4882a593Smuzhiyun help 152*4882a593Smuzhiyun If you have IBM virtual TPM (VTPM) support say Yes and it 153*4882a593Smuzhiyun will be accessible from within Linux. To compile this driver 154*4882a593Smuzhiyun as a module, choose M here; the module will be called tpm_ibmvtpm. 155*4882a593Smuzhiyun 156*4882a593Smuzhiyunconfig TCG_XEN 157*4882a593Smuzhiyun tristate "XEN TPM Interface" 158*4882a593Smuzhiyun depends on TCG_TPM && XEN 159*4882a593Smuzhiyun select XEN_XENBUS_FRONTEND 160*4882a593Smuzhiyun help 161*4882a593Smuzhiyun If you want to make TPM support available to a Xen user domain, 162*4882a593Smuzhiyun say Yes and it will be accessible from within Linux. See 163*4882a593Smuzhiyun the manpages for xl, xl.conf, and docs/misc/vtpm.txt in 164*4882a593Smuzhiyun the Xen source repository for more details. 165*4882a593Smuzhiyun To compile this driver as a module, choose M here; the module 166*4882a593Smuzhiyun will be called xen-tpmfront. 167*4882a593Smuzhiyun 168*4882a593Smuzhiyunconfig TCG_CRB 169*4882a593Smuzhiyun tristate "TPM 2.0 CRB Interface" 170*4882a593Smuzhiyun depends on ACPI 171*4882a593Smuzhiyun help 172*4882a593Smuzhiyun If you have a TPM security chip that is compliant with the 173*4882a593Smuzhiyun TCG CRB 2.0 TPM specification say Yes and it will be accessible 174*4882a593Smuzhiyun from within Linux. To compile this driver as a module, choose 175*4882a593Smuzhiyun M here; the module will be called tpm_crb. 176*4882a593Smuzhiyun 177*4882a593Smuzhiyunconfig TCG_VTPM_PROXY 178*4882a593Smuzhiyun tristate "VTPM Proxy Interface" 179*4882a593Smuzhiyun depends on TCG_TPM 180*4882a593Smuzhiyun help 181*4882a593Smuzhiyun This driver proxies for an emulated TPM (vTPM) running in userspace. 182*4882a593Smuzhiyun A device /dev/vtpmx is provided that creates a device pair 183*4882a593Smuzhiyun /dev/vtpmX and a server-side file descriptor on which the vTPM 184*4882a593Smuzhiyun can receive commands. 185*4882a593Smuzhiyun 186*4882a593Smuzhiyunconfig TCG_FTPM_TEE 187*4882a593Smuzhiyun tristate "TEE based fTPM Interface" 188*4882a593Smuzhiyun depends on TEE && OPTEE 189*4882a593Smuzhiyun help 190*4882a593Smuzhiyun This driver proxies for firmware TPM running in TEE. 191*4882a593Smuzhiyun 192*4882a593Smuzhiyunsource "drivers/char/tpm/st33zp24/Kconfig" 193*4882a593Smuzhiyunendif # TCG_TPM 194