Kconfig 7.7 KB

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