Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 1 | # |
| 2 | # TPM subsystem configuration |
| 3 | # |
| 4 | |
| 5 | menu "TPM support" |
| 6 | |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 7 | config TPM_V1 |
| 8 | bool "TPMv1.x support" |
| 9 | depends on TPM |
| 10 | default y |
| 11 | help |
| 12 | Major TPM versions are not compatible at all, choose either |
| 13 | one or the other. This option enables TPMv1.x drivers/commands. |
| 14 | |
Miquel Raynal | 2a2096e | 2018-07-19 22:35:09 +0200 | [diff] [blame] | 15 | if TPM_V1 |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 16 | |
Simon Glass | 527a072 | 2015-03-06 13:19:07 -0700 | [diff] [blame] | 17 | config TPM_TIS_SANDBOX |
| 18 | bool "Enable sandbox TPM driver" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 19 | depends on TPM_V1 && SANDBOX |
Miquel Raynal | a0cf1d0 | 2018-07-19 22:35:07 +0200 | [diff] [blame] | 20 | default y |
Simon Glass | 527a072 | 2015-03-06 13:19:07 -0700 | [diff] [blame] | 21 | help |
Miquel Raynal | 2bae712 | 2018-05-15 11:57:25 +0200 | [diff] [blame] | 22 | This driver emulates a TPMv1.x, providing access to base functions |
Simon Glass | 527a072 | 2015-03-06 13:19:07 -0700 | [diff] [blame] | 23 | such as reading and writing TPM private data. This is enough to |
| 24 | support Chrome OS verified boot. Extend functionality is not |
| 25 | implemented. |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 26 | |
| 27 | config TPM_ATMEL_TWI |
| 28 | bool "Enable Atmel TWI TPM device driver" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 29 | depends on TPM_V1 |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 30 | help |
| 31 | This driver supports an Atmel TPM device connected on the I2C bus. |
| 32 | The usual tpm operations and the 'tpm' command can be used to talk |
| 33 | to the device using the standard TPM Interface Specification (TIS) |
| 34 | protocol |
| 35 | |
Christophe Ricard | 0766ad2 | 2015-10-06 22:54:41 +0200 | [diff] [blame] | 36 | config TPM_TIS_INFINEON |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 37 | bool "Enable support for Infineon SLB9635/45 TPMs on I2C" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 38 | depends on TPM_V1 && DM_I2C |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 39 | help |
| 40 | This driver supports Infineon TPM devices connected on the I2C bus. |
| 41 | The usual tpm operations and the 'tpm' command can be used to talk |
| 42 | to the device using the standard TPM Interface Specification (TIS) |
| 43 | protocol |
| 44 | |
| 45 | config TPM_TIS_I2C_BURST_LIMITATION |
| 46 | bool "Enable I2C burst length limitation" |
Miquel Raynal | d677bfe | 2018-05-15 11:57:06 +0200 | [diff] [blame] | 47 | depends on TPM_TIS_INFINEON |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 48 | help |
| 49 | Some broken TPMs have a limitation on the number of bytes they can |
| 50 | receive in one message. Enable this option to allow you to set this |
| 51 | option. The can allow a broken TPM to be used by splitting messages |
| 52 | into separate pieces. |
| 53 | |
| 54 | config TPM_TIS_I2C_BURST_LIMITATION_LEN |
| 55 | int "Length" |
| 56 | depends on TPM_TIS_I2C_BURST_LIMITATION |
| 57 | help |
| 58 | Use this to set the burst limitation length |
| 59 | |
| 60 | config TPM_TIS_LPC |
| 61 | bool "Enable support for Infineon SLB9635/45 TPMs on LPC" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 62 | depends on TPM_V1 && X86 |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 63 | help |
Christophe Ricard | ca5bc1b | 2016-01-21 23:19:14 +0100 | [diff] [blame] | 64 | This driver supports Infineon TPM devices connected on the LPC bus. |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 65 | The usual tpm operations and the 'tpm' command can be used to talk |
| 66 | to the device using the standard TPM Interface Specification (TIS) |
| 67 | protocol |
| 68 | |
| 69 | config TPM_AUTH_SESSIONS |
| 70 | bool "Enable TPM authentication session support" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 71 | depends on TPM_V1 |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 72 | help |
| 73 | Enable support for authorised (AUTH1) commands as specified in the |
| 74 | TCG Main Specification 1.2. OIAP-authorised versions of the commands |
| 75 | TPM_LoadKey2 and TPM_GetPubKey are provided. Both features are |
| 76 | available using the 'tpm' command, too. |
| 77 | |
Christophe Ricard | 3aa7408 | 2016-01-21 23:27:13 +0100 | [diff] [blame] | 78 | config TPM_ST33ZP24_I2C |
| 79 | bool "STMicroelectronics ST33ZP24 I2C TPM" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 80 | depends on TPM_V1 && DM_I2C |
Christophe Ricard | 3aa7408 | 2016-01-21 23:27:13 +0100 | [diff] [blame] | 81 | ---help--- |
| 82 | This driver supports STMicroelectronics TPM devices connected on the I2C bus. |
| 83 | The usual tpm operations and the 'tpm' command can be used to talk |
| 84 | to the device using the standard TPM Interface Specification (TIS) |
| 85 | protocol |
| 86 | |
Christophe Ricard | b75fdc1 | 2016-01-21 23:27:14 +0100 | [diff] [blame] | 87 | config TPM_ST33ZP24_SPI |
| 88 | bool "STMicroelectronics ST33ZP24 SPI TPM" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 89 | depends on TPM_V1 && DM_SPI |
Christophe Ricard | b75fdc1 | 2016-01-21 23:27:14 +0100 | [diff] [blame] | 90 | ---help--- |
| 91 | This driver supports STMicroelectronics TPM devices connected on the SPI bus. |
| 92 | The usual tpm operations and the 'tpm' command can be used to talk |
| 93 | to the device using the standard TPM Interface Specification (TIS) |
| 94 | protocol |
| 95 | |
Mario Six | 7690be3 | 2017-01-11 16:00:50 +0100 | [diff] [blame] | 96 | config TPM_FLUSH_RESOURCES |
| 97 | bool "Enable TPM resource flushing support" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 98 | depends on TPM_V1 |
Mario Six | 7690be3 | 2017-01-11 16:00:50 +0100 | [diff] [blame] | 99 | help |
| 100 | Enable support to flush specific resources (e.g. keys) from the TPM. |
| 101 | The functionality is available via the 'tpm' command as well. |
mario.six@gdsys.cc | 0f4b2ba | 2017-03-20 10:28:28 +0100 | [diff] [blame] | 102 | |
| 103 | config TPM_LOAD_KEY_BY_SHA1 |
| 104 | bool "Enable TPM key loading by SHA1 support" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 105 | depends on TPM_V1 |
mario.six@gdsys.cc | 0f4b2ba | 2017-03-20 10:28:28 +0100 | [diff] [blame] | 106 | help |
| 107 | Enable support to load keys into the TPM by identifying |
| 108 | their parent via the public key's SHA1 hash. |
| 109 | The functionality is available via the 'tpm' command as well. |
mario.six@gdsys.cc | 3d1df0e | 2017-03-20 10:28:30 +0100 | [diff] [blame] | 110 | |
| 111 | config TPM_LIST_RESOURCES |
| 112 | bool "Enable TPM resource listing support" |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 113 | depends on TPM_V1 |
mario.six@gdsys.cc | 3d1df0e | 2017-03-20 10:28:30 +0100 | [diff] [blame] | 114 | help |
| 115 | Enable support to list specific resources (e.g. keys) within the TPM. |
| 116 | The functionality is available via the 'tpm' command as well. |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 117 | |
| 118 | endif # TPM_V1 |
| 119 | |
| 120 | config TPM_V2 |
| 121 | bool "TPMv2.x support" |
| 122 | depends on TPM |
Miquel Raynal | 5823307 | 2018-07-19 22:35:11 +0200 | [diff] [blame] | 123 | default y |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 124 | help |
| 125 | Major TPM versions are not compatible at all, choose either |
| 126 | one or the other. This option enables TPMv2.x drivers/commands. |
| 127 | |
Miquel Raynal | 2a2096e | 2018-07-19 22:35:09 +0200 | [diff] [blame] | 128 | if TPM_V2 |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 129 | |
Simon Glass | d36856a | 2020-02-06 09:55:04 -0700 | [diff] [blame] | 130 | config TPM2_CR50_I2C |
| 131 | bool "Enable support for Google cr50 TPM" |
| 132 | depends on DM_I2C |
| 133 | help |
| 134 | Cr50 is an implementation of a TPM on Google's H1 security chip. |
| 135 | This uses the same open-source firmware as the Chromium OS EC. |
| 136 | While Cr50 has other features, its primary role is as the root of |
| 137 | trust for a device, It operates like a TPM and can be used with |
| 138 | verified boot. Cr50 is used on recent Chromebooks (since 2017). |
| 139 | |
Simon Glass | 747093d | 2022-04-30 00:56:53 -0600 | [diff] [blame] | 140 | config SPL_TPM2_CR50_I2C |
| 141 | bool "Enable support for Google cr50 TPM" |
| 142 | depends on DM_I2C && SPL_TPM |
| 143 | help |
| 144 | Cr50 is an implementation of a TPM on Google's H1 security chip. |
| 145 | This uses the same open-source firmware as the Chromium OS EC. |
| 146 | While Cr50 has other features, its primary role is as the root of |
| 147 | trust for a device, It operates like a TPM and can be used with |
| 148 | verified boot. Cr50 is used on recent Chromebooks (since 2017). |
| 149 | |
| 150 | config TPL_TPM2_CR50_I2C |
| 151 | bool "Enable support for Google cr50 TPM" |
| 152 | depends on DM_I2C && TPL_TPM |
| 153 | help |
| 154 | Cr50 is an implementation of a TPM on Google's H1 security chip. |
| 155 | This uses the same open-source firmware as the Chromium OS EC. |
| 156 | While Cr50 has other features, its primary role is as the root of |
| 157 | trust for a device, It operates like a TPM and can be used with |
| 158 | verified boot. Cr50 is used on recent Chromebooks (since 2017). |
| 159 | |
| 160 | config VPL_TPM2_CR50_I2C |
| 161 | bool "Enable support for Google cr50 TPM" |
| 162 | depends on DM_I2C && VPL_TPM |
| 163 | help |
| 164 | Cr50 is an implementation of a TPM on Google's H1 security chip. |
| 165 | This uses the same open-source firmware as the Chromium OS EC. |
| 166 | While Cr50 has other features, its primary role is as the root of |
| 167 | trust for a device, It operates like a TPM and can be used with |
| 168 | verified boot. Cr50 is used on recent Chromebooks (since 2017). |
| 169 | |
Miquel Raynal | 2bae712 | 2018-05-15 11:57:25 +0200 | [diff] [blame] | 170 | config TPM2_TIS_SANDBOX |
| 171 | bool "Enable sandbox TPMv2.x driver" |
| 172 | depends on TPM_V2 && SANDBOX |
Miquel Raynal | a0cf1d0 | 2018-07-19 22:35:07 +0200 | [diff] [blame] | 173 | default y |
Miquel Raynal | 2bae712 | 2018-05-15 11:57:25 +0200 | [diff] [blame] | 174 | help |
| 175 | This driver emulates a TPMv2.x, providing access to base functions |
| 176 | such as basic configuration, PCR extension and PCR read. Extended |
| 177 | functionalities are not implemented. |
| 178 | |
Miquel Raynal | eb46910 | 2018-05-15 11:57:21 +0200 | [diff] [blame] | 179 | config TPM2_TIS_SPI |
| 180 | bool "Enable support for TPMv2.x SPI chips" |
| 181 | depends on TPM_V2 && DM_SPI |
Miquel Raynal | eb46910 | 2018-05-15 11:57:21 +0200 | [diff] [blame] | 182 | help |
| 183 | This driver supports TPMv2.x devices connected on the SPI bus. |
| 184 | The usual TPM operations and the 'tpm' command can be used to talk |
| 185 | to the device using the standard TPM Interface Specification (TIS) |
| 186 | protocol. |
| 187 | |
Eddie James | 9f971da | 2022-05-13 13:30:00 -0500 | [diff] [blame^] | 188 | config TPM2_TIS_I2C |
| 189 | bool "Enable support for TPMv2.x I2C chips" |
| 190 | depends on TPM_V2 && DM_I2C |
| 191 | help |
| 192 | This driver supports TPMv2.x devices connected on the I2C bus. |
| 193 | The usual TPM operations and the 'tpm' command can be used to talk |
| 194 | to the device using the standard TPM Interface Specification (TIS) |
| 195 | protocol. |
| 196 | |
Thirupathaiah Annapureddy | 8d73be7 | 2020-01-12 23:34:22 -0800 | [diff] [blame] | 197 | config TPM2_FTPM_TEE |
| 198 | bool "TEE based fTPM Interface" |
| 199 | depends on TEE && OPTEE && TPM_V2 |
| 200 | help |
| 201 | This driver supports firmware TPM running in TEE. |
| 202 | |
Ilias Apalodimas | e0ff348 | 2021-11-09 09:02:18 +0200 | [diff] [blame] | 203 | config TPM2_MMIO |
| 204 | bool "MMIO based TPM2 Interface" |
| 205 | depends on TPM_V2 |
| 206 | help |
| 207 | This driver supports firmware TPM2.0 MMIO interface. |
| 208 | The usual TPM operations and the 'tpm' command can be used to talk |
| 209 | to the device using the standard TPM Interface Specification (TIS) |
| 210 | protocol. |
| 211 | |
Miquel Raynal | 9f9ce3c | 2018-05-15 11:57:05 +0200 | [diff] [blame] | 212 | endif # TPM_V2 |
| 213 | |
Simon Glass | a7d660b | 2015-08-22 18:31:19 -0600 | [diff] [blame] | 214 | endmenu |