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