230 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2#3# TPM device configuration4#5 6menuconfig TCG_TPM7 tristate "TPM Hardware Support"8 depends on HAS_IOMEM9 imply SECURITYFS10 select CRYPTO11 select CRYPTO_HASH_INFO12 help13 If you have a TPM security chip in your system, which14 implements the Trusted Computing Group's specification,15 say Yes and it will be accessible from within Linux. For16 more information see <http://www.trustedcomputinggroup.org>. 17 An implementation of the Trusted Software Stack (TSS), the 18 userspace enablement piece of the specification, can be 19 obtained at: <http://sourceforge.net/projects/trousers>. To 20 compile this driver as a module, choose M here; the module 21 will be called tpm. If unsure, say N.22 Notes:23 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI24 and CONFIG_PNPACPI.25 2) Without ACPI enabled, the BIOS event log won't be accessible,26 which is required to validate the PCR 0-7 values.27 28if TCG_TPM29 30config TCG_TPM2_HMAC31 bool "Use HMAC and encrypted transactions on the TPM bus"32 default X86_6433 select CRYPTO_ECDH34 select CRYPTO_LIB_AESCFB35 select CRYPTO_LIB_SHA25636 help37 Setting this causes us to deploy a scheme which uses request38 and response HMACs in addition to encryption for39 communicating with the TPM to prevent or detect bus snooping40 and interposer attacks (see tpm-security.rst). Saying Y41 here adds some encryption overhead to all kernel to TPM42 transactions.43 44config HW_RANDOM_TPM45 bool "TPM HW Random Number Generator support"46 depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m)47 default y48 help49 This setting exposes the TPM's Random Number Generator as a hwrng50 device. This allows the kernel to collect randomness from the TPM at51 boot, and provides the TPM randomines in /dev/hwrng.52 53 If unsure, say Y.54 55config TCG_TIS_CORE56 tristate57 help58 TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks59 into the TPM kernel APIs. Physical layers will register against it.60 61config TCG_TIS62 tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"63 depends on X86 || OF64 select TCG_TIS_CORE65 help66 If you have a TPM security chip that is compliant with the67 TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO68 specification (TPM2.0) say Yes and it will be accessible from69 within Linux. To compile this driver as a module, choose M here;70 the module will be called tpm_tis.71 72config TCG_TIS_SPI73 tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"74 depends on SPI75 select TCG_TIS_CORE76 help77 If you have a TPM security chip which is connected to a regular,78 non-tcg SPI master (i.e. most embedded platforms) that is compliant with the79 TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO80 specification (TPM2.0) say Yes and it will be accessible from81 within Linux. To compile this driver as a module, choose M here;82 the module will be called tpm_tis_spi.83 84config TCG_TIS_SPI_CR5085 bool "Cr50 SPI Interface"86 depends on TCG_TIS_SPI87 help88 If you have a H1 secure module running Cr50 firmware on SPI bus,89 say Yes and it will be accessible from within Linux.90 91config TCG_TIS_I2C92 tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (I2C - generic)"93 depends on I2C94 select CRC_CCITT95 select TCG_TIS_CORE96 help97 If you have a TPM security chip, compliant with the TCG TPM PTP98 (I2C interface) specification and connected to an I2C bus master,99 say Yes and it will be accessible from within Linux.100 To compile this driver as a module, choose M here;101 the module will be called tpm_tis_i2c.102 103config TCG_TIS_SYNQUACER104 tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)"105 depends on ARCH_SYNQUACER || COMPILE_TEST106 select TCG_TIS_CORE107 help108 If you have a TPM security chip that is compliant with the109 TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO110 specification (TPM2.0) say Yes and it will be accessible from111 within Linux on Socionext SynQuacer platform.112 To compile this driver as a module, choose M here;113 the module will be called tpm_tis_synquacer.114 115config TCG_TIS_I2C_CR50116 tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)"117 depends on I2C118 help119 This is a driver for the Google cr50 I2C TPM interface which is a120 custom microcontroller and requires a custom i2c protocol interface121 to handle the limitations of the hardware. To compile this driver122 as a module, choose M here; the module will be called tcg_tis_i2c_cr50.123 124config TCG_TIS_I2C_ATMEL125 tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"126 depends on I2C127 help128 If you have an Atmel I2C TPM security chip say Yes and it will be129 accessible from within Linux.130 To compile this driver as a module, choose M here; the module will131 be called tpm_tis_i2c_atmel.132 133config TCG_TIS_I2C_INFINEON134 tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"135 depends on I2C136 help137 If you have a TPM security chip that is compliant with the138 TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack139 Specification 0.20 say Yes and it will be accessible from within140 Linux.141 To compile this driver as a module, choose M here; the module142 will be called tpm_i2c_infineon.143 144config TCG_TIS_I2C_NUVOTON145 tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"146 depends on I2C147 help148 If you have a TPM security chip with an I2C interface from149 Nuvoton Technology Corp. say Yes and it will be accessible150 from within Linux.151 To compile this driver as a module, choose M here; the module152 will be called tpm_i2c_nuvoton.153 154config TCG_NSC155 tristate "National Semiconductor TPM Interface"156 depends on X86157 help158 If you have a TPM security chip from National Semiconductor 159 say Yes and it will be accessible from within Linux. To 160 compile this driver as a module, choose M here; the module 161 will be called tpm_nsc.162 163config TCG_ATMEL164 tristate "Atmel TPM Interface"165 depends on PPC64 || HAS_IOPORT_MAP166 depends on HAS_IOPORT167 help168 If you have a TPM security chip from Atmel say Yes and it 169 will be accessible from within Linux. To compile this driver 170 as a module, choose M here; the module will be called tpm_atmel.171 172config TCG_INFINEON173 tristate "Infineon Technologies TPM Interface"174 depends on PNP || COMPILE_TEST175 help176 If you have a TPM security chip from Infineon Technologies177 (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it178 will be accessible from within Linux.179 To compile this driver as a module, choose M here; the module180 will be called tpm_infineon.181 Further information on this driver and the supported hardware182 can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 183 184config TCG_IBMVTPM185 tristate "IBM VTPM Interface"186 depends on PPC_PSERIES187 help188 If you have IBM virtual TPM (VTPM) support say Yes and it189 will be accessible from within Linux. To compile this driver190 as a module, choose M here; the module will be called tpm_ibmvtpm.191 192config TCG_XEN193 tristate "XEN TPM Interface"194 depends on TCG_TPM && XEN195 select XEN_XENBUS_FRONTEND196 help197 If you want to make TPM support available to a Xen user domain,198 say Yes and it will be accessible from within Linux. See199 the manpages for xl, xl.conf, and docs/misc/vtpm.txt in200 the Xen source repository for more details.201 To compile this driver as a module, choose M here; the module202 will be called xen-tpmfront.203 204config TCG_CRB205 tristate "TPM 2.0 CRB Interface"206 depends on ACPI207 help208 If you have a TPM security chip that is compliant with the209 TCG CRB 2.0 TPM specification say Yes and it will be accessible210 from within Linux. To compile this driver as a module, choose211 M here; the module will be called tpm_crb.212 213config TCG_VTPM_PROXY214 tristate "VTPM Proxy Interface"215 depends on TCG_TPM216 help217 This driver proxies for an emulated TPM (vTPM) running in userspace.218 A device /dev/vtpmx is provided that creates a device pair219 /dev/vtpmX and a server-side file descriptor on which the vTPM220 can receive commands.221 222config TCG_FTPM_TEE223 tristate "TEE based fTPM Interface"224 depends on TEE && OPTEE225 help226 This driver proxies for firmware TPM running in TEE.227 228source "drivers/char/tpm/st33zp24/Kconfig"229endif # TCG_TPM230