xref: /openbmc/linux/drivers/char/tpm/Kconfig (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
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