# SPDX-License-Identifier: GPL-2.0-only
#
# TPM device configuration
#
menuconfig [31mCONFIG_TCG_TPM[0m
tristate "TPM Hardware Support"
depends on [31mCONFIG_HAS_IOMEM[0m
imply [31mCONFIG_SECURITYFS[0m
select [31mCONFIG_CRYPTO[0m
select [31mCONFIG_CRYPTO_HASH_INFO[0m
---help---
If you have a TPM security chip in your system, which
implements the Trusted Computing Group's specification,
say Yes and it will be accessible from within Linux. For
more information see <http://www.trustedcomputinggroup.org>.
An implementation of the Trusted Software Stack (TSS), the
userspace enablement piece of the specification, can be
obtained at: <http://sourceforge.net/projects/trousers>. To
compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called tpm. If unsure, say N.
Notes:
1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI
and CONFIG_PNPACPI.
2) Without [31mCONFIG_ACPI[0m enabled, the BIOS event log won't be accessible,
which is required to validate the PCR 0-7 values.
if [31mCONFIG_TCG_TPM[0m
config [31mCONFIG_HW_RANDOM_TPM[0m
bool "TPM HW Random Number Generator support"
depends on [31mCONFIG_TCG_TPM[0m && [31mCONFIG_HW_RANDOM[0m && !([31mCONFIG_TCG_TPM[0m=y && [31mCONFIG_HW_RANDOM[0m=m)
default y
---help---
This setting exposes the TPM's Random Number Generator as a hwrng
device. This allows the kernel to collect randomness from the TPM at
boot, and provides the TPM randomines in /dev/hwrng.
If unsure, say Y.
config [31mCONFIG_TCG_TIS_CORE[0m
tristate
---help---
TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks
into the TPM kernel APIs. Physical layers will register against it.
config [31mCONFIG_TCG_TIS[0m
tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"
depends on [31mCONFIG_X86[0m || [31mCONFIG_OF[0m
select [31mCONFIG_TCG_TIS_CORE[0m
---help---
If you have a TPM security chip that is compliant with the
TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
specification (TPM2.0) say Yes and it will be accessible from
within Linux. To compile this driver as a module, choose [31mCONFIG_M[0m here;
the module will be called tpm_tis.
config [31mCONFIG_TCG_TIS_SPI[0m
tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"
depends on [31mCONFIG_SPI[0m
select [31mCONFIG_TCG_TIS_CORE[0m
---help---
If you have a TPM security chip which is connected to a regular,
non-tcg [31mCONFIG_SPI[0m master (i.e. most embedded platforms) that is compliant with the
TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO
specification (TPM2.0) say Yes and it will be accessible from
within Linux. To compile this driver as a module, choose [31mCONFIG_M[0m here;
the module will be called tpm_tis_spi.
config [31mCONFIG_TCG_TIS_I2C_ATMEL[0m
tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
depends on [31mCONFIG_I2C[0m
---help---
If you have an Atmel [31mCONFIG_I2C[0m TPM security chip say Yes and it will be
accessible from within Linux.
To compile this driver as a module, choose [31mCONFIG_M[0m here; the module will
be called tpm_tis_i2c_atmel.
config [31mCONFIG_TCG_TIS_I2C_INFINEON[0m
tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
depends on [31mCONFIG_I2C[0m
---help---
If you have a TPM security chip that is compliant with the
TCG TIS 1.2 TPM specification and Infineon's [31mCONFIG_I2C[0m Protocol Stack
Specification 0.20 say Yes and it will be accessible from within
Linux.
To compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called tpm_i2c_infineon.
config [31mCONFIG_TCG_TIS_I2C_NUVOTON[0m
tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
depends on [31mCONFIG_I2C[0m
---help---
If you have a TPM security chip with an [31mCONFIG_I2C[0m interface from
Nuvoton Technology Corp. say Yes and it will be accessible
from within Linux.
To compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called tpm_i2c_nuvoton.
config [31mCONFIG_TCG_NSC[0m
tristate "National Semiconductor TPM Interface"
depends on [31mCONFIG_X86[0m
---help---
If you have a TPM security chip from National Semiconductor
say Yes and it will be accessible from within Linux. To
compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called tpm_nsc.
config [31mCONFIG_TCG_ATMEL[0m
tristate "Atmel TPM Interface"
depends on [31mCONFIG_PPC64[0m || [31mCONFIG_HAS_IOPORT_MAP[0m
---help---
If you have a TPM security chip from Atmel say Yes and it
will be accessible from within Linux. To compile this driver
as a module, choose [31mCONFIG_M[0m here; the module will be called tpm_atmel.
config [31mCONFIG_TCG_INFINEON[0m
tristate "Infineon Technologies TPM Interface"
depends on [31mCONFIG_PNP[0m
---help---
If you have a TPM security chip from Infineon Technologies
(either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
will be accessible from within Linux.
To compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called tpm_infineon.
Further information on this driver and the supported hardware
can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/
config [31mCONFIG_TCG_IBMVTPM[0m
tristate "IBM VTPM Interface"
depends on [31mCONFIG_PPC_PSERIES[0m
---help---
If you have IBM virtual TPM (VTPM) support say Yes and it
will be accessible from within Linux. To compile this driver
as a module, choose [31mCONFIG_M[0m here; the module will be called tpm_ibmvtpm.
config [31mCONFIG_TCG_XEN[0m
tristate "XEN TPM Interface"
depends on [31mCONFIG_TCG_TPM[0m && [31mCONFIG_XEN[0m
select [31mCONFIG_XEN_XENBUS_FRONTEND[0m
---help---
If you want to make TPM support available to a Xen user domain,
say Yes and it will be accessible from within Linux. See
the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
the Xen source repository for more details.
To compile this driver as a module, choose [31mCONFIG_M[0m here; the module
will be called xen-tpmfront.
config [31mCONFIG_TCG_CRB[0m
tristate "TPM 2.0 CRB Interface"
depends on [31mCONFIG_ACPI[0m
---help---
If you have a TPM security chip that is compliant with the
TCG CRB 2.0 TPM specification say Yes and it will be accessible
from within Linux. To compile this driver as a module, choose
[31mCONFIG_M[0m here; the module will be called tpm_crb.
config [31mCONFIG_TCG_VTPM_PROXY[0m
tristate "VTPM Proxy Interface"
depends on [31mCONFIG_TCG_TPM[0m
---help---
This driver proxies for an emulated TPM (vTPM) running in userspace.
[31mCONFIG_A[0m device /dev/vtpmx is provided that creates a device pair
/dev/vtpmX and a server-side file descriptor on which the vTPM
can receive commands.
config [31mCONFIG_TCG_FTPM_TEE[0m
tristate "TEE based fTPM Interface"
depends on [31mCONFIG_TEE[0m && [31mCONFIG_OPTEE[0m
help
This driver proxies for firmware TPM running in [31mCONFIG_TEE[0m.
source "drivers/char/tpm/st33zp24/Kconfig"
endif # [31mCONFIG_TCG_TPM[0m