[coreboot-gerrit] New patch to review for coreboot: kconfig: allow various tpm type and interface permutations

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Tue Jun 21 23:17:53 CEST 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15294

-gerrit

commit b83231ff5c4f756daf1716e19900da97efce5903
Author: Vadim Bendebury <vbendeb at chromium.org>
Date:   Thu Jun 2 20:43:19 2016 -0700

    kconfig: allow various tpm type and interface permutations
    
    Until now it was assumed that all TPM devices were of the same type
    (TCG 1.2 spec compliant) and x86 based boards had LPC connected TPMs
    and all other boards had I2C connected TPMs.
    
    With the advent of TPM2 specification there is a need to be able to
    configure different combinations of TPM types (TPM or TPM2) and
    interfaces (LPC, I2C and SPI).
    
    This patch allows to do it. Picking Chrome OS still assumes that the
    board has a TPM device, but adding MAINBOARD_HAS_TPM2 to the board's
    Kconfig will trigger including of TPM2 instead.
    
    MAINBOARD_HAS_LPC_TPM forces the interface to be set to LPC, adding
    SPI_TPM to the board config switches interface choice to SPI, and if
    neither of the two is defined, the interface is assumed to be I2C.
    
    BRANCH=none
    BUG=chrome-os-partner:50645
    TEST=verified that none of the generated board configurations change
         as a result of this patch. With the rest of the stack in place it
         is possible to configure different combinations of TPM types and
         interfaces for ARM and x86 boards.
    
    Change-Id: I24f2e3ee63636566bf2a867c51ed80a622672f07
    Signed-off-by: Martin Roth <martinroth at chromium.org>
    Original-Commit-Id: 5a25c1070560cd2734519f87dfbf401c135088d1
    Original-Change-Id: I659e9301a4a4fe065ca6537ef1fa824a08d36321
    Original-Signed-off-by: Vadim Bendebury <vbendeb at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/349850
    Original-Reviewed-by: Martin Roth <martinroth at chromium.org>
---
 src/Kconfig                            | 24 ++++++++++++++++++++----
 src/drivers/i2c/tpm/Kconfig            |  2 +-
 src/drivers/spi/tpm/Kconfig            |  8 ++++++++
 src/vendorcode/google/chromeos/Kconfig |  3 ++-
 4 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/src/Kconfig b/src/Kconfig
index 1cb55c9..7043851 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -403,6 +403,14 @@ config FMDFILE
 	  but in some cases more complex setups are required.
 	  When an fmd is specified, it overrides the default format.
 
+config MAINBOARD_HAS_TPM2
+	bool
+	default n
+	help
+	  There is a TPM device installed on the mainboard, and it is
+	  compliant with version 2 TCG TPM specification. Could be connected
+	  over LPC, SPI or I2C.
+
 endmenu
 
 # load site-local kconfig to allow user specific defaults and overrides
@@ -461,14 +469,22 @@ config RTC
 config TPM
 	bool
 	default n
-	select LPC_TPM if ARCH_X86
-	select I2C_TPM if ARCH_ARM
-	select I2C_TPM if ARCH_ARM64
+	select LPC_TPM if MAINBOARD_HAS_LPC_TPM
+	select I2C_TPM if !MAINBOARD_HAS_LPC_TPM && !SPI_TPM
 	help
 	  Enable this option to enable TPM support in coreboot.
 
 	  If unsure, say N.
 
+config TPM2
+	bool
+	select LPC_TPM if MAINBOARD_HAS_LPC_TPM
+	select I2C_TPM if !MAINBOARD_HAS_LPC_TPM && !SPI_TPM
+	help
+	  Enable this option to enable TPM2 support in coreboot.
+
+	  If unsure, say N.
+
 config HEAP_SIZE
 	hex
 	default 0x4000
@@ -1029,7 +1045,7 @@ config X86EMU_DEBUG_TIMINGS
 config DEBUG_TPM
 	bool "Output verbose TPM debug messages"
 	default n
-	depends on TPM
+	depends on TPM || TPM2
 	help
 	  This option enables additional TPM related debug messages.
 
diff --git a/src/drivers/i2c/tpm/Kconfig b/src/drivers/i2c/tpm/Kconfig
index f2b969f..594ffd5 100644
--- a/src/drivers/i2c/tpm/Kconfig
+++ b/src/drivers/i2c/tpm/Kconfig
@@ -1,6 +1,6 @@
 config I2C_TPM
 	bool "I2C TPM"
-	depends on !PC80_SYSTEM # for now
+	depends on TPM || TPM2
 
 config DRIVER_TPM_I2C_BUS
 	hex "I2C TPM chip bus"
diff --git a/src/drivers/spi/tpm/Kconfig b/src/drivers/spi/tpm/Kconfig
new file mode 100644
index 0000000..e2a6bb6
--- /dev/null
+++ b/src/drivers/spi/tpm/Kconfig
@@ -0,0 +1,8 @@
+config SPI_TPM
+	bool "SPI TPM"
+	depends on !PC80_SYSTEM && TPM2
+
+config DRIVER_TPM_SPI_BUS
+	hex "SPI bus TPM chip is connected to"
+	default 0
+	depends on SPI_TPM
diff --git a/src/vendorcode/google/chromeos/Kconfig b/src/vendorcode/google/chromeos/Kconfig
index 269c176..f97a4e1 100644
--- a/src/vendorcode/google/chromeos/Kconfig
+++ b/src/vendorcode/google/chromeos/Kconfig
@@ -21,7 +21,8 @@ menu "ChromeOS"
 config CHROMEOS
 	bool "Build for ChromeOS"
 	default n
-	select TPM
+	select TPM if !MAINBOARD_HAS_TPM2
+	select TPM2 if MAINBOARD_HAS_TPM2
 	select TPM_INIT_FAILURE_IS_FATAL if PC80_SYSTEM && LPC_TPM
 	select SKIP_TPM_STARTUP_ON_NORMAL_BOOT if PC80_SYSTEM && LPC_TPM
 	select BOOTMODE_STRAPS



More information about the coreboot-gerrit mailing list