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