Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / drivers / char / tpm / Kconfig
blob0fc9a510e059772dfe42e1f9158b5d5ff0d3dfeb
1 # SPDX-License-Identifier: GPL-2.0-only
3 # TPM device configuration
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.
28 if TCG_TPM
30 config TCG_TPM2_HMAC
31         bool "Use HMAC and encrypted transactions on the TPM bus"
32         default X86_64
33         select CRYPTO_ECDH
34         select CRYPTO_LIB_AESCFB
35         select CRYPTO_LIB_SHA256
36         help
37           Setting this causes us to deploy a scheme which uses request
38           and response HMACs in addition to encryption for
39           communicating with the TPM to prevent or detect bus snooping
40           and interposer attacks (see tpm-security.rst).  Saying Y
41           here adds some encryption overhead to all kernel to TPM
42           transactions.
44 config HW_RANDOM_TPM
45         bool "TPM HW Random Number Generator support"
46         depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m)
47         default y
48         help
49           This setting exposes the TPM's Random Number Generator as a hwrng
50           device. This allows the kernel to collect randomness from the TPM at
51           boot, and provides the TPM randomines in /dev/hwrng.
53           If unsure, say Y.
55 config TCG_TIS_CORE
56         tristate
57         help
58         TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks
59         into the TPM kernel APIs. Physical layers will register against it.
61 config TCG_TIS
62         tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"
63         depends on X86 || OF
64         select TCG_TIS_CORE
65         help
66           If you have a TPM security chip that is compliant with the
67           TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
68           specification (TPM2.0) say Yes and it will be accessible from
69           within Linux. To compile this driver as a module, choose  M here;
70           the module will be called tpm_tis.
72 config TCG_TIS_SPI
73         tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"
74         depends on SPI
75         select TCG_TIS_CORE
76         help
77           If you have a TPM security chip which is connected to a regular,
78           non-tcg SPI master (i.e. most embedded platforms) that is compliant with the
79           TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO
80           specification (TPM2.0) say Yes and it will be accessible from
81           within Linux. To compile this driver as a module, choose  M here;
82           the module will be called tpm_tis_spi.
84 config TCG_TIS_SPI_CR50
85         bool "Cr50 SPI Interface"
86         depends on TCG_TIS_SPI
87         help
88           If you have a H1 secure module running Cr50 firmware on SPI bus,
89           say Yes and it will be accessible from within Linux.
91 config TCG_TIS_I2C
92         tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (I2C - generic)"
93         depends on I2C
94         select CRC_CCITT
95         select TCG_TIS_CORE
96         help
97           If you have a TPM security chip, compliant with the TCG TPM PTP
98           (I2C interface) specification and connected to an I2C bus master,
99           say Yes and it will be accessible from within Linux.
100           To compile this driver as a module, choose M here;
101           the module will be called tpm_tis_i2c.
103 config TCG_TIS_SYNQUACER
104         tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)"
105         depends on ARCH_SYNQUACER || COMPILE_TEST
106         select TCG_TIS_CORE
107         help
108           If you have a TPM security chip that is compliant with the
109           TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
110           specification (TPM2.0) say Yes and it will be accessible from
111           within Linux on Socionext SynQuacer platform.
112           To compile this driver as a module, choose  M here;
113           the module will be called tpm_tis_synquacer.
115 config TCG_TIS_I2C_CR50
116         tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)"
117         depends on I2C
118         help
119           This is a driver for the Google cr50 I2C TPM interface which is a
120           custom microcontroller and requires a custom i2c protocol interface
121           to handle the limitations of the hardware.  To compile this driver
122           as a module, choose M here; the module will be called tcg_tis_i2c_cr50.
124 config TCG_TIS_I2C_ATMEL
125         tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
126         depends on I2C
127         help
128           If you have an Atmel I2C TPM security chip say Yes and it will be
129           accessible from within Linux.
130           To compile this driver as a module, choose M here; the module will
131           be called tpm_tis_i2c_atmel.
133 config TCG_TIS_I2C_INFINEON
134         tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
135         depends on I2C
136         help
137           If you have a TPM security chip that is compliant with the
138           TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack
139           Specification 0.20 say Yes and it will be accessible from within
140           Linux.
141           To compile this driver as a module, choose M here; the module
142           will be called tpm_i2c_infineon.
144 config TCG_TIS_I2C_NUVOTON
145         tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
146         depends on I2C
147         help
148           If you have a TPM security chip with an I2C interface from
149           Nuvoton Technology Corp. say Yes and it will be accessible
150           from within Linux.
151           To compile this driver as a module, choose M here; the module
152           will be called tpm_i2c_nuvoton.
154 config TCG_NSC
155         tristate "National Semiconductor TPM Interface"
156         depends on X86
157         help
158           If you have a TPM security chip from National Semiconductor 
159           say Yes and it will be accessible from within Linux.  To 
160           compile this driver as a module, choose M here; the module 
161           will be called tpm_nsc.
163 config TCG_ATMEL
164         tristate "Atmel TPM Interface"
165         depends on HAS_IOPORT_MAP
166         depends on HAS_IOPORT
167         help
168           If you have a TPM security chip from Atmel say Yes and it 
169           will be accessible from within Linux.  To compile this driver 
170           as a module, choose M here; the module will be called tpm_atmel.
172 config TCG_INFINEON
173         tristate "Infineon Technologies TPM Interface"
174         depends on PNP || COMPILE_TEST
175         help
176           If you have a TPM security chip from Infineon Technologies
177           (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
178           will be accessible from within Linux.
179           To compile this driver as a module, choose M here; the module
180           will be called tpm_infineon.
181           Further information on this driver and the supported hardware
182           can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/ 
184 config TCG_IBMVTPM
185         tristate "IBM VTPM Interface"
186         depends on PPC_PSERIES
187         help
188           If you have IBM virtual TPM (VTPM) support say Yes and it
189           will be accessible from within Linux.  To compile this driver
190           as a module, choose M here; the module will be called tpm_ibmvtpm.
192 config TCG_XEN
193         tristate "XEN TPM Interface"
194         depends on TCG_TPM && XEN
195         select XEN_XENBUS_FRONTEND
196         help
197           If you want to make TPM support available to a Xen user domain,
198           say Yes and it will be accessible from within Linux. See
199           the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
200           the Xen source repository for more details.
201           To compile this driver as a module, choose M here; the module
202           will be called xen-tpmfront.
204 config TCG_CRB
205         tristate "TPM 2.0 CRB Interface"
206         depends on ACPI
207         help
208           If you have a TPM security chip that is compliant with the
209           TCG CRB 2.0 TPM specification say Yes and it will be accessible
210           from within Linux.  To compile this driver as a module, choose
211           M here; the module will be called tpm_crb.
213 config TCG_VTPM_PROXY
214         tristate "VTPM Proxy Interface"
215         depends on TCG_TPM
216         help
217           This driver proxies for an emulated TPM (vTPM) running in userspace.
218           A device /dev/vtpmx is provided that creates a device pair
219           /dev/vtpmX and a server-side file descriptor on which the vTPM
220           can receive commands.
222 config TCG_FTPM_TEE
223         tristate "TEE based fTPM Interface"
224         depends on TEE && OPTEE
225         help
226           This driver proxies for firmware TPM running in TEE.
228 source "drivers/char/tpm/st33zp24/Kconfig"
229 endif # TCG_TPM