GNU Linux-libre 5.10.215-gnu1
[releases.git] / drivers / char / tpm / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # TPM device configuration
4 #
5
6 menuconfig 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
28 if TCG_TPM
29
30 config 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
41 config 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
47 config 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
58 config 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
70 config 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
77 config 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
89 config TCG_TIS_I2C_ATMEL
90         tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
91         depends on I2C
92         help
93           If you have an Atmel I2C TPM security chip say Yes and it will be
94           accessible from within Linux.
95           To compile this driver as a module, choose M here; the module will
96           be called tpm_tis_i2c_atmel.
97
98 config TCG_TIS_I2C_INFINEON
99         tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
100         depends on I2C
101         help
102           If you have a TPM security chip that is compliant with the
103           TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack
104           Specification 0.20 say Yes and it will be accessible from within
105           Linux.
106           To compile this driver as a module, choose M here; the module
107           will be called tpm_i2c_infineon.
108
109 config TCG_TIS_I2C_NUVOTON
110         tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
111         depends on I2C
112         help
113           If you have a TPM security chip with an I2C interface from
114           Nuvoton Technology Corp. say Yes and it will be accessible
115           from within Linux.
116           To compile this driver as a module, choose M here; the module
117           will be called tpm_i2c_nuvoton.
118
119 config TCG_NSC
120         tristate "National Semiconductor TPM Interface"
121         depends on X86
122         help
123           If you have a TPM security chip from National Semiconductor 
124           say Yes and it will be accessible from within Linux.  To 
125           compile this driver as a module, choose M here; the module 
126           will be called tpm_nsc.
127
128 config TCG_ATMEL
129         tristate "Atmel TPM Interface"
130         depends on PPC64 || HAS_IOPORT_MAP
131         help
132           If you have a TPM security chip from Atmel say Yes and it 
133           will be accessible from within Linux.  To compile this driver 
134           as a module, choose M here; the module will be called tpm_atmel.
135
136 config TCG_INFINEON
137         tristate "Infineon Technologies TPM Interface"
138         depends on PNP
139         help
140           If you have a TPM security chip from Infineon Technologies
141           (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
142           will be accessible from within Linux.
143           To compile this driver as a module, choose M here; the module
144           will be called tpm_infineon.
145           Further information on this driver and the supported hardware
146           can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 
147
148 config TCG_IBMVTPM
149         tristate "IBM VTPM Interface"
150         depends on PPC_PSERIES
151         help
152           If you have IBM virtual TPM (VTPM) support say Yes and it
153           will be accessible from within Linux.  To compile this driver
154           as a module, choose M here; the module will be called tpm_ibmvtpm.
155
156 config TCG_XEN
157         tristate "XEN TPM Interface"
158         depends on TCG_TPM && XEN
159         select XEN_XENBUS_FRONTEND
160         help
161           If you want to make TPM support available to a Xen user domain,
162           say Yes and it will be accessible from within Linux. See
163           the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
164           the Xen source repository for more details.
165           To compile this driver as a module, choose M here; the module
166           will be called xen-tpmfront.
167
168 config TCG_CRB
169         tristate "TPM 2.0 CRB Interface"
170         depends on ACPI
171         help
172           If you have a TPM security chip that is compliant with the
173           TCG CRB 2.0 TPM specification say Yes and it will be accessible
174           from within Linux.  To compile this driver as a module, choose
175           M here; the module will be called tpm_crb.
176
177 config TCG_VTPM_PROXY
178         tristate "VTPM Proxy Interface"
179         depends on TCG_TPM
180         help
181           This driver proxies for an emulated TPM (vTPM) running in userspace.
182           A device /dev/vtpmx is provided that creates a device pair
183           /dev/vtpmX and a server-side file descriptor on which the vTPM
184           can receive commands.
185
186 config TCG_FTPM_TEE
187         tristate "TEE based fTPM Interface"
188         depends on TEE && OPTEE
189         help
190           This driver proxies for firmware TPM running in TEE.
191
192 source "drivers/char/tpm/st33zp24/Kconfig"
193 endif # TCG_TPM