1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 21da177e4SLinus Torvalds# 31da177e4SLinus Torvalds# TPM device configuration 41da177e4SLinus Torvalds# 51da177e4SLinus Torvalds 67126b75cSJan Engelhardtmenuconfig TCG_TPM 71da177e4SLinus Torvalds tristate "TPM Hardware Support" 87126b75cSJan Engelhardt depends on HAS_IOMEM 92f7d8dbbSPeter Huewe imply SECURITYFS 104bf4b4edSArnd Bergmann select CRYPTO 11c1f92b4bSNayna Jain select CRYPTO_HASH_INFO 12a7f7f624SMasahiro Yamada help 131da177e4SLinus Torvalds If you have a TPM security chip in your system, which 141da177e4SLinus Torvalds implements the Trusted Computing Group's specification, 151da177e4SLinus Torvalds say Yes and it will be accessible from within Linux. For 161da177e4SLinus Torvalds more information see <http://www.trustedcomputinggroup.org>. 171da177e4SLinus Torvalds An implementation of the Trusted Software Stack (TSS), the 181da177e4SLinus Torvalds userspace enablement piece of the specification, can be 191da177e4SLinus Torvalds obtained at: <http://sourceforge.net/projects/trousers>. To 201da177e4SLinus Torvalds compile this driver as a module, choose M here; the module 211da177e4SLinus Torvalds will be called tpm. If unsure, say N. 227f2ab000SRajiv Andrade Notes: 237f2ab000SRajiv Andrade 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI 24ec4a162aSJames Morris and CONFIG_PNPACPI. 257f2ab000SRajiv Andrade 2) Without ACPI enabled, the BIOS event log won't be accessible, 267f2ab000SRajiv Andrade which is required to validate the PCR 0-7 values. 271da177e4SLinus Torvalds 287126b75cSJan Engelhardtif TCG_TPM 297126b75cSJan Engelhardt 306e592a06SJason Gunthorpeconfig HW_RANDOM_TPM 316e592a06SJason Gunthorpe bool "TPM HW Random Number Generator support" 326e592a06SJason Gunthorpe depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m) 336e592a06SJason Gunthorpe default y 34a7f7f624SMasahiro Yamada help 356e592a06SJason Gunthorpe This setting exposes the TPM's Random Number Generator as a hwrng 366e592a06SJason Gunthorpe device. This allows the kernel to collect randomness from the TPM at 376e592a06SJason Gunthorpe boot, and provides the TPM randomines in /dev/hwrng. 386e592a06SJason Gunthorpe 396e592a06SJason Gunthorpe If unsure, say Y. 406e592a06SJason Gunthorpe 4141a5e1cfSChristophe Ricardconfig TCG_TIS_CORE 4241a5e1cfSChristophe Ricard tristate 43a7f7f624SMasahiro Yamada help 4441a5e1cfSChristophe Ricard TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks 4541a5e1cfSChristophe Ricard into the TPM kernel APIs. Physical layers will register against it. 4641a5e1cfSChristophe Ricard 4727084efeSLeendert van Doornconfig TCG_TIS 4844506436SPeter Huewe tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface" 49420d4398SJason Gunthorpe depends on X86 || OF 5041a5e1cfSChristophe Ricard select TCG_TIS_CORE 51a7f7f624SMasahiro Yamada help 5227084efeSLeendert van Doorn If you have a TPM security chip that is compliant with the 5344506436SPeter Huewe TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 5444506436SPeter Huewe specification (TPM2.0) say Yes and it will be accessible from 5544506436SPeter Huewe within Linux. To compile this driver as a module, choose M here; 5644506436SPeter Huewe the module will be called tpm_tis. 5727084efeSLeendert van Doorn 580edbfea5SChristophe Ricardconfig TCG_TIS_SPI 590edbfea5SChristophe Ricard tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)" 600edbfea5SChristophe Ricard depends on SPI 610edbfea5SChristophe Ricard select TCG_TIS_CORE 62a7f7f624SMasahiro Yamada help 630edbfea5SChristophe Ricard If you have a TPM security chip which is connected to a regular, 640edbfea5SChristophe Ricard non-tcg SPI master (i.e. most embedded platforms) that is compliant with the 650edbfea5SChristophe Ricard TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO 660edbfea5SChristophe Ricard specification (TPM2.0) say Yes and it will be accessible from 670edbfea5SChristophe Ricard within Linux. To compile this driver as a module, choose M here; 680edbfea5SChristophe Ricard the module will be called tpm_tis_spi. 690edbfea5SChristophe Ricard 70797c0113SAndrey Proninconfig TCG_TIS_SPI_CR50 71797c0113SAndrey Pronin bool "Cr50 SPI Interface" 72797c0113SAndrey Pronin depends on TCG_TIS_SPI 73797c0113SAndrey Pronin help 74797c0113SAndrey Pronin If you have a H1 secure module running Cr50 firmware on SPI bus, 75797c0113SAndrey Pronin say Yes and it will be accessible from within Linux. 76797c0113SAndrey Pronin 77*bbc23a07SAlexander Steffenconfig TCG_TIS_I2C 78*bbc23a07SAlexander Steffen tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (I2C - generic)" 79*bbc23a07SAlexander Steffen depends on I2C 80*bbc23a07SAlexander Steffen select CRC_CCITT 81*bbc23a07SAlexander Steffen select TCG_TIS_CORE 82*bbc23a07SAlexander Steffen help 83*bbc23a07SAlexander Steffen If you have a TPM security chip, compliant with the TCG TPM PTP 84*bbc23a07SAlexander Steffen (I2C interface) specification and connected to an I2C bus master, 85*bbc23a07SAlexander Steffen say Yes and it will be accessible from within Linux. 86*bbc23a07SAlexander Steffen To compile this driver as a module, choose M here; 87*bbc23a07SAlexander Steffen the module will be called tpm_tis_i2c. 88*bbc23a07SAlexander Steffen 89d5ae56a4SMasahisa Kojimaconfig TCG_TIS_SYNQUACER 90d5ae56a4SMasahisa Kojima tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)" 914091c004SCai Huoqing depends on ARCH_SYNQUACER || COMPILE_TEST 92d5ae56a4SMasahisa Kojima select TCG_TIS_CORE 93d5ae56a4SMasahisa Kojima help 94d5ae56a4SMasahisa Kojima If you have a TPM security chip that is compliant with the 95d5ae56a4SMasahisa Kojima TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO 96d5ae56a4SMasahisa Kojima specification (TPM2.0) say Yes and it will be accessible from 97d5ae56a4SMasahisa Kojima within Linux on Socionext SynQuacer platform. 98d5ae56a4SMasahisa Kojima To compile this driver as a module, choose M here; 99d5ae56a4SMasahisa Kojima the module will be called tpm_tis_synquacer. 100d5ae56a4SMasahisa Kojima 1013a253caaSDuncan Laurieconfig TCG_TIS_I2C_CR50 1023a253caaSDuncan Laurie tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)" 1033a253caaSDuncan Laurie depends on I2C 1043a253caaSDuncan Laurie help 1053a253caaSDuncan Laurie This is a driver for the Google cr50 I2C TPM interface which is a 1063a253caaSDuncan Laurie custom microcontroller and requires a custom i2c protocol interface 1073a253caaSDuncan Laurie to handle the limitations of the hardware. To compile this driver 1083a253caaSDuncan Laurie as a module, choose M here; the module will be called tcg_tis_i2c_cr50. 1093a253caaSDuncan Laurie 110a2871c62SJason Gunthorpeconfig TCG_TIS_I2C_ATMEL 111a2871c62SJason Gunthorpe tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)" 112a2871c62SJason Gunthorpe depends on I2C 113a7f7f624SMasahiro Yamada help 114a2871c62SJason Gunthorpe If you have an Atmel I2C TPM security chip say Yes and it will be 115a2871c62SJason Gunthorpe accessible from within Linux. 116a2871c62SJason Gunthorpe To compile this driver as a module, choose M here; the module will 117a2871c62SJason Gunthorpe be called tpm_tis_i2c_atmel. 118a2871c62SJason Gunthorpe 119aad628c1SPeter Hueweconfig TCG_TIS_I2C_INFINEON 120aad628c1SPeter Huewe tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)" 121aad628c1SPeter Huewe depends on I2C 122a7f7f624SMasahiro Yamada help 123aad628c1SPeter Huewe If you have a TPM security chip that is compliant with the 124aad628c1SPeter Huewe TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack 125aad628c1SPeter Huewe Specification 0.20 say Yes and it will be accessible from within 126aad628c1SPeter Huewe Linux. 127aad628c1SPeter Huewe To compile this driver as a module, choose M here; the module 128b3f2436aSPeter Huewe will be called tpm_i2c_infineon. 129aad628c1SPeter Huewe 1304c336e4bSJason Gunthorpeconfig TCG_TIS_I2C_NUVOTON 1314c336e4bSJason Gunthorpe tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)" 1324c336e4bSJason Gunthorpe depends on I2C 133a7f7f624SMasahiro Yamada help 1344c336e4bSJason Gunthorpe If you have a TPM security chip with an I2C interface from 1354c336e4bSJason Gunthorpe Nuvoton Technology Corp. say Yes and it will be accessible 1364c336e4bSJason Gunthorpe from within Linux. 1374c336e4bSJason Gunthorpe To compile this driver as a module, choose M here; the module 1384c336e4bSJason Gunthorpe will be called tpm_i2c_nuvoton. 1394c336e4bSJason Gunthorpe 1401da177e4SLinus Torvaldsconfig TCG_NSC 1411da177e4SLinus Torvalds tristate "National Semiconductor TPM Interface" 1422f592f2aSRajiv Andrade depends on X86 143a7f7f624SMasahiro Yamada help 1443dde6ad8SDavid Sterba If you have a TPM security chip from National Semiconductor 1451da177e4SLinus Torvalds say Yes and it will be accessible from within Linux. To 1461da177e4SLinus Torvalds compile this driver as a module, choose M here; the module 1471da177e4SLinus Torvalds will be called tpm_nsc. 1481da177e4SLinus Torvalds 1491da177e4SLinus Torvaldsconfig TCG_ATMEL 1501da177e4SLinus Torvalds tristate "Atmel TPM Interface" 151ce816fa8SUwe Kleine-König depends on PPC64 || HAS_IOPORT_MAP 152a7f7f624SMasahiro Yamada help 1531da177e4SLinus Torvalds If you have a TPM security chip from Atmel say Yes and it 1541da177e4SLinus Torvalds will be accessible from within Linux. To compile this driver 1551da177e4SLinus Torvalds as a module, choose M here; the module will be called tpm_atmel. 1561da177e4SLinus Torvalds 157ebb81fdbSMarcel Selhorstconfig TCG_INFINEON 158f9abb020SMarcel Selhorst tristate "Infineon Technologies TPM Interface" 159cedb27deSBjorn Helgaas depends on PNP 160a7f7f624SMasahiro Yamada help 161ebb81fdbSMarcel Selhorst If you have a TPM security chip from Infineon Technologies 162f9abb020SMarcel Selhorst (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it 163f9abb020SMarcel Selhorst will be accessible from within Linux. 164f9abb020SMarcel Selhorst To compile this driver as a module, choose M here; the module 165ebb81fdbSMarcel Selhorst will be called tpm_infineon. 166ebb81fdbSMarcel Selhorst Further information on this driver and the supported hardware 167631dd1a8SJustin P. Mattock can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 168ebb81fdbSMarcel Selhorst 169132f7629SAshley Laiconfig TCG_IBMVTPM 170132f7629SAshley Lai tristate "IBM VTPM Interface" 1715b266032SKent Yoder depends on PPC_PSERIES 172a7f7f624SMasahiro Yamada help 173132f7629SAshley Lai If you have IBM virtual TPM (VTPM) support say Yes and it 174132f7629SAshley Lai will be accessible from within Linux. To compile this driver 175132f7629SAshley Lai as a module, choose M here; the module will be called tpm_ibmvtpm. 176132f7629SAshley Lai 177e2683957SDaniel De Graafconfig TCG_XEN 178e2683957SDaniel De Graaf tristate "XEN TPM Interface" 179e2683957SDaniel De Graaf depends on TCG_TPM && XEN 180713efcabSKonrad Rzeszutek Wilk select XEN_XENBUS_FRONTEND 181a7f7f624SMasahiro Yamada help 182e2683957SDaniel De Graaf If you want to make TPM support available to a Xen user domain, 183e2683957SDaniel De Graaf say Yes and it will be accessible from within Linux. See 184e2683957SDaniel De Graaf the manpages for xl, xl.conf, and docs/misc/vtpm.txt in 185e2683957SDaniel De Graaf the Xen source repository for more details. 186e2683957SDaniel De Graaf To compile this driver as a module, choose M here; the module 187e2683957SDaniel De Graaf will be called xen-tpmfront. 188e2683957SDaniel De Graaf 18930fc8d13SJarkko Sakkinenconfig TCG_CRB 19030fc8d13SJarkko Sakkinen tristate "TPM 2.0 CRB Interface" 19108eff49dSJiandi An depends on ACPI 192a7f7f624SMasahiro Yamada help 19330fc8d13SJarkko Sakkinen If you have a TPM security chip that is compliant with the 19430fc8d13SJarkko Sakkinen TCG CRB 2.0 TPM specification say Yes and it will be accessible 19530fc8d13SJarkko Sakkinen from within Linux. To compile this driver as a module, choose 19630fc8d13SJarkko Sakkinen M here; the module will be called tpm_crb. 19730fc8d13SJarkko Sakkinen 1986f99612eSStefan Bergerconfig TCG_VTPM_PROXY 1996f99612eSStefan Berger tristate "VTPM Proxy Interface" 2006f99612eSStefan Berger depends on TCG_TPM 201a7f7f624SMasahiro Yamada help 2026f99612eSStefan Berger This driver proxies for an emulated TPM (vTPM) running in userspace. 2036f99612eSStefan Berger A device /dev/vtpmx is provided that creates a device pair 2046f99612eSStefan Berger /dev/vtpmX and a server-side file descriptor on which the vTPM 2056f99612eSStefan Berger can receive commands. 2066f99612eSStefan Berger 20709e57483SSasha Levinconfig TCG_FTPM_TEE 20809e57483SSasha Levin tristate "TEE based fTPM Interface" 20909e57483SSasha Levin depends on TEE && OPTEE 21009e57483SSasha Levin help 21109e57483SSasha Levin This driver proxies for firmware TPM running in TEE. 2126f99612eSStefan Berger 213bf38b871SChristophe Ricardsource "drivers/char/tpm/st33zp24/Kconfig" 2147126b75cSJan Engelhardtendif # TCG_TPM 215