xref: /openbmc/linux/drivers/char/tpm/Kconfig (revision 8938c48f)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# TPM device configuration
4#
5
6menuconfig TCG_TPM
7	tristate "TPM Hardware Support"
8	depends on HAS_IOMEM
9	imply SECURITYFS
10	select CRYPTO
11	select CRYPTO_HASH_INFO
12	help
13	  If you have a TPM security chip in your system, which
14	  implements the Trusted Computing Group's specification,
15	  say Yes and it will be accessible from within Linux.  For
16	  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_ACPI
24	  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_TPM
29
30config HW_RANDOM_TPM
31	bool "TPM HW Random Number Generator support"
32	depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m)
33	default y
34	help
35	  This setting exposes the TPM's Random Number Generator as a hwrng
36	  device. This allows the kernel to collect randomness from the TPM at
37	  boot, and provides the TPM randomines in /dev/hwrng.
38
39	  If unsure, say Y.
40
41config TCG_TIS_CORE
42	tristate
43	help
44	TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks
45	into the TPM kernel APIs. Physical layers will register against it.
46
47config TCG_TIS
48	tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"
49	depends on X86 || OF
50	select TCG_TIS_CORE
51	help
52	  If you have a TPM security chip that is compliant with the
53	  TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
54	  specification (TPM2.0) say Yes and it will be accessible from
55	  within Linux. To compile this driver as a module, choose  M here;
56	  the module will be called tpm_tis.
57
58config TCG_TIS_SPI
59	tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"
60	depends on SPI
61	select TCG_TIS_CORE
62	help
63	  If you have a TPM security chip which is connected to a regular,
64	  non-tcg SPI master (i.e. most embedded platforms) that is compliant with the
65	  TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO
66	  specification (TPM2.0) say Yes and it will be accessible from
67	  within Linux. To compile this driver as a module, choose  M here;
68	  the module will be called tpm_tis_spi.
69
70config TCG_TIS_SPI_CR50
71	bool "Cr50 SPI Interface"
72	depends on TCG_TIS_SPI
73	help
74	  If you have a H1 secure module running Cr50 firmware on SPI bus,
75	  say Yes and it will be accessible from within Linux.
76
77config TCG_TIS_SYNQUACER
78	tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)"
79	depends on ARCH_SYNQUACER
80	select TCG_TIS_CORE
81	help
82	  If you have a TPM security chip that is compliant with the
83	  TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
84	  specification (TPM2.0) say Yes and it will be accessible from
85	  within Linux on Socionext SynQuacer platform.
86	  To compile this driver as a module, choose  M here;
87	  the module will be called tpm_tis_synquacer.
88
89config TCG_TIS_I2C_CR50
90	tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)"
91	depends on I2C
92	select TCG_CR50
93	help
94	  This is a driver for the Google cr50 I2C TPM interface which is a
95	  custom microcontroller and requires a custom i2c protocol interface
96	  to handle the limitations of the hardware.  To compile this driver
97	  as a module, choose M here; the module will be called tcg_tis_i2c_cr50.
98
99config TCG_TIS_I2C_ATMEL
100	tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
101	depends on I2C
102	help
103	  If you have an Atmel I2C TPM security chip say Yes and it will be
104	  accessible from within Linux.
105	  To compile this driver as a module, choose M here; the module will
106	  be called tpm_tis_i2c_atmel.
107
108config TCG_TIS_I2C_INFINEON
109	tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
110	depends on I2C
111	help
112	  If you have a TPM security chip that is compliant with the
113	  TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack
114	  Specification 0.20 say Yes and it will be accessible from within
115	  Linux.
116	  To compile this driver as a module, choose M here; the module
117	  will be called tpm_i2c_infineon.
118
119config TCG_TIS_I2C_NUVOTON
120	tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
121	depends on I2C
122	help
123	  If you have a TPM security chip with an I2C interface from
124	  Nuvoton Technology Corp. say Yes and it will be accessible
125	  from within Linux.
126	  To compile this driver as a module, choose M here; the module
127	  will be called tpm_i2c_nuvoton.
128
129config TCG_NSC
130	tristate "National Semiconductor TPM Interface"
131	depends on X86
132	help
133	  If you have a TPM security chip from National Semiconductor
134	  say Yes and it will be accessible from within Linux.  To
135	  compile this driver as a module, choose M here; the module
136	  will be called tpm_nsc.
137
138config TCG_ATMEL
139	tristate "Atmel TPM Interface"
140	depends on PPC64 || HAS_IOPORT_MAP
141	help
142	  If you have a TPM security chip from Atmel say Yes and it
143	  will be accessible from within Linux.  To compile this driver
144	  as a module, choose M here; the module will be called tpm_atmel.
145
146config TCG_INFINEON
147	tristate "Infineon Technologies TPM Interface"
148	depends on PNP
149	help
150	  If you have a TPM security chip from Infineon Technologies
151	  (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
152	  will be accessible from within Linux.
153	  To compile this driver as a module, choose M here; the module
154	  will be called tpm_infineon.
155	  Further information on this driver and the supported hardware
156	  can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/
157
158config TCG_IBMVTPM
159	tristate "IBM VTPM Interface"
160	depends on PPC_PSERIES
161	help
162	  If you have IBM virtual TPM (VTPM) support say Yes and it
163	  will be accessible from within Linux.  To compile this driver
164	  as a module, choose M here; the module will be called tpm_ibmvtpm.
165
166config TCG_XEN
167	tristate "XEN TPM Interface"
168	depends on TCG_TPM && XEN
169	select XEN_XENBUS_FRONTEND
170	help
171	  If you want to make TPM support available to a Xen user domain,
172	  say Yes and it will be accessible from within Linux. See
173	  the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
174	  the Xen source repository for more details.
175	  To compile this driver as a module, choose M here; the module
176	  will be called xen-tpmfront.
177
178config TCG_CRB
179	tristate "TPM 2.0 CRB Interface"
180	depends on ACPI
181	help
182	  If you have a TPM security chip that is compliant with the
183	  TCG CRB 2.0 TPM specification say Yes and it will be accessible
184	  from within Linux.  To compile this driver as a module, choose
185	  M here; the module will be called tpm_crb.
186
187config TCG_VTPM_PROXY
188	tristate "VTPM Proxy Interface"
189	depends on TCG_TPM
190	help
191	  This driver proxies for an emulated TPM (vTPM) running in userspace.
192	  A device /dev/vtpmx is provided that creates a device pair
193	  /dev/vtpmX and a server-side file descriptor on which the vTPM
194	  can receive commands.
195
196config TCG_FTPM_TEE
197	tristate "TEE based fTPM Interface"
198	depends on TEE && OPTEE
199	help
200	  This driver proxies for firmware TPM running in TEE.
201
202source "drivers/char/tpm/st33zp24/Kconfig"
203endif # TCG_TPM
204