google/fizz: Enable cr50 over SPI
By default disabled. Will need to add FIZZ_USE_SPI_TPM config to enable. BUG=b:62456589, b:35775024 BRANCH=None TEST=Reboot and ensure that TPM works in verstage CQ-DEPEND=CL:530184 Change-Id: I14ce73a1c3745c996b79c4d4758ca744e63a46b4 Signed-off-by: Shelley Chen <shchen@chromium.org> Reviewed-on: https://review.coreboot.org/20134 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
db287aad25
commit
5aa64b97db
|
@ -5,6 +5,7 @@ config BOARD_SPECIFIC_OPTIONS
|
||||||
select BOARD_ID_AUTO
|
select BOARD_ID_AUTO
|
||||||
select BOARD_ROMSIZE_KB_16384
|
select BOARD_ROMSIZE_KB_16384
|
||||||
select DRIVERS_I2C_GENERIC
|
select DRIVERS_I2C_GENERIC
|
||||||
|
select DRIVERS_SPI_ACPI
|
||||||
select EC_GOOGLE_CHROMEEC
|
select EC_GOOGLE_CHROMEEC
|
||||||
select EC_GOOGLE_CHROMEEC_LPC
|
select EC_GOOGLE_CHROMEEC_LPC
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
|
@ -28,6 +29,10 @@ config DRIVER_TPM_I2C_ADDR
|
||||||
depends on FIZZ_USE_I2C_TPM
|
depends on FIZZ_USE_I2C_TPM
|
||||||
default 0x50
|
default 0x50
|
||||||
|
|
||||||
|
config DRIVER_TPM_SPI_BUS
|
||||||
|
depends on FIZZ_USE_SPI_TPM
|
||||||
|
default 0x1
|
||||||
|
|
||||||
config GBB_HWID
|
config GBB_HWID
|
||||||
string
|
string
|
||||||
depends on CHROMEOS
|
depends on CHROMEOS
|
||||||
|
@ -65,6 +70,14 @@ config FIZZ_USE_I2C_TPM
|
||||||
select MAINBOARD_HAS_I2C_TPM_CR50
|
select MAINBOARD_HAS_I2C_TPM_CR50
|
||||||
select TPM2
|
select TPM2
|
||||||
|
|
||||||
|
# Select this option to enable use of cr50 I2C TPM on fizz.
|
||||||
|
config FIZZ_USE_SPI_TPM
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
select MAINBOARD_HAS_SPI_TPM_CR50
|
||||||
|
select SPI_TPM
|
||||||
|
select TPM2
|
||||||
|
|
||||||
config TPM_TIS_ACPI_INTERRUPT
|
config TPM_TIS_ACPI_INTERRUPT
|
||||||
int
|
int
|
||||||
default 64 # GPE0_DW2_00 (GPP_E0)
|
default 64 # GPE0_DW2_00 (GPP_E0)
|
||||||
|
|
|
@ -181,6 +181,13 @@ chip soc/intel/skylake
|
||||||
register "i2c_voltage[2]" = "I2C_VOLTAGE_3V3" # Debug
|
register "i2c_voltage[2]" = "I2C_VOLTAGE_3V3" # Debug
|
||||||
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8" # Audio
|
register "i2c_voltage[5]" = "I2C_VOLTAGE_1V8" # Audio
|
||||||
|
|
||||||
|
# Use GSPI0 for cr50 TPM. Early init is required to set up a BAR for TPM
|
||||||
|
# communication before memory is up.
|
||||||
|
register "gspi[0]" = "{
|
||||||
|
.speed_mhz = 1,
|
||||||
|
.early_init = 1,
|
||||||
|
}"
|
||||||
|
|
||||||
# Configure I2C1 for cr50 TPM. Early init is required to set up a BAR
|
# Configure I2C1 for cr50 TPM. Early init is required to set up a BAR
|
||||||
# for TPM communication before memory is up.
|
# for TPM communication before memory is up.
|
||||||
register "i2c[1]" = "{
|
register "i2c[1]" = "{
|
||||||
|
@ -259,7 +266,14 @@ chip soc/intel/skylake
|
||||||
device pci 1d.3 off end # PCI Express Port 12
|
device pci 1d.3 off end # PCI Express Port 12
|
||||||
device pci 1e.0 on end # UART #0
|
device pci 1e.0 on end # UART #0
|
||||||
device pci 1e.1 off end # UART #1
|
device pci 1e.1 off end # UART #1
|
||||||
device pci 1e.2 on end # GSPI #0
|
device pci 1e.2 on
|
||||||
|
chip drivers/spi/acpi
|
||||||
|
register "hid" = "ACPI_DT_NAMESPACE_HID"
|
||||||
|
register "compat_string" = ""google,cr50""
|
||||||
|
register "irq" = "ACPI_IRQ_EDGE_LOW(GPP_E0_IRQ)"
|
||||||
|
device spi 0 on end
|
||||||
|
end
|
||||||
|
end # GSPI #0
|
||||||
device pci 1e.3 off end # GSPI #1
|
device pci 1e.3 off end # GSPI #1
|
||||||
device pci 1e.4 off end # eMMC
|
device pci 1e.4 off end # eMMC
|
||||||
device pci 1e.5 off end # SDIO
|
device pci 1e.5 off end # SDIO
|
||||||
|
|
|
@ -80,10 +80,21 @@ static const struct pad_config gpio_table[] = {
|
||||||
/* SLP_S0# */ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), /* PM_SLP_S0# */
|
/* SLP_S0# */ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), /* PM_SLP_S0# */
|
||||||
/* PLTRST# */ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), /* PCI_PLTRST# */
|
/* PLTRST# */ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), /* PCI_PLTRST# */
|
||||||
/* SPKR */ PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1), /* SPKR */
|
/* SPKR */ PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1), /* SPKR */
|
||||||
/* GSPI0_CS# */ PAD_CFG_NC(GPP_B15), /* PCH_SPI_H1_3V3_CS_L */
|
#if IS_ENABLED(CONFIG_FIZZ_USE_SPI_TPM)
|
||||||
/* GSPI0_CLK */ PAD_CFG_NC(GPP_B16), /* PCH_SPI_H1_3V3_CLK */
|
/* GSPI0_CS# */ PAD_CFG_NF(GPP_B15, NONE, DEEP,
|
||||||
/* GSPI0_MISO */ PAD_CFG_NC(GPP_B17), /* PCH_SPI_H1_3V3_MISO */
|
NF1), /* PCH_SPI_H1_3V3_CS_L */
|
||||||
/* GSPI0_MOSI */ PAD_CFG_NC(GPP_B18), /* PCH_SPI_H1_3V3_MOSI */
|
/* GSPI0_CLK */ PAD_CFG_NF(GPP_B16, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_CLK */
|
||||||
|
/* GSPI0_MISO */ PAD_CFG_NF(GPP_B17, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_MISO */
|
||||||
|
/* GSPI0_MOSI */ PAD_CFG_NF(GPP_B18, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_MOSI */
|
||||||
|
#else
|
||||||
|
/* GSPI0_CS# */ PAD_CFG_NC(GPP_B15),
|
||||||
|
/* GSPI0_CLK */ PAD_CFG_NC(GPP_B16),
|
||||||
|
/* GSPI0_MISO */ PAD_CFG_NC(GPP_B17),
|
||||||
|
/* GSPI0_MOSI */ PAD_CFG_NC(GPP_B18),
|
||||||
|
#endif
|
||||||
/* GSPI1_CS# */ PAD_CFG_NC(GPP_B19), /* TP111 */
|
/* GSPI1_CS# */ PAD_CFG_NC(GPP_B19), /* TP111 */
|
||||||
/* GSPI1_CLK */ PAD_CFG_GPI(GPP_B20, 20K_PU, DEEP), /* VR_DISABLE_L */
|
/* GSPI1_CLK */ PAD_CFG_GPI(GPP_B20, 20K_PU, DEEP), /* VR_DISABLE_L */
|
||||||
/* GSPI1_MISO */ PAD_CFG_GPI(GPP_B21, 20K_PU, DEEP), /* HWA_TRST_N */
|
/* GSPI1_MISO */ PAD_CFG_GPI(GPP_B21, 20K_PU, DEEP), /* HWA_TRST_N */
|
||||||
|
@ -238,6 +249,16 @@ static const struct pad_config gpio_table[] = {
|
||||||
|
|
||||||
/* Early pad configuration in bootblock */
|
/* Early pad configuration in bootblock */
|
||||||
static const struct pad_config early_gpio_table[] = {
|
static const struct pad_config early_gpio_table[] = {
|
||||||
|
#if IS_ENABLED(CONFIG_FIZZ_USE_SPI_TPM)
|
||||||
|
/* GSPI0_CS# */ PAD_CFG_NF(GPP_B15, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_CS_L */
|
||||||
|
/* GSPI0_CLK */ PAD_CFG_NF(GPP_B16, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_CLK */
|
||||||
|
/* GSPI0_MISO */ PAD_CFG_NF(GPP_B17, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_MISO */
|
||||||
|
/* GSPI0_MOSI */ PAD_CFG_NF(GPP_B18, NONE, DEEP,
|
||||||
|
NF1), /* PCH_SPI_H1_3V3_MOSI */
|
||||||
|
#endif
|
||||||
#if IS_ENABLED(CONFIG_FIZZ_USE_I2C_TPM)
|
#if IS_ENABLED(CONFIG_FIZZ_USE_I2C_TPM)
|
||||||
/* I2C1_SDA */ PAD_CFG_NF(GPP_C18, NONE, DEEP,
|
/* I2C1_SDA */ PAD_CFG_NF(GPP_C18, NONE, DEEP,
|
||||||
NF1), /* PCH_I2C1_H1_3V3_SDA */
|
NF1), /* PCH_I2C1_H1_3V3_SDA */
|
||||||
|
|
|
@ -33,6 +33,12 @@ static void mainboard_enable(device_t dev)
|
||||||
dev->ops->acpi_inject_dsdt_generator = chromeos_dsdt_generator;
|
dev->ops->acpi_inject_dsdt_generator = chromeos_dsdt_generator;
|
||||||
|
|
||||||
/* Disable unused interface for TPM. */
|
/* Disable unused interface for TPM. */
|
||||||
|
if (!IS_ENABLED(CONFIG_FIZZ_USE_SPI_TPM)) {
|
||||||
|
tpm = PCH_DEV_GSPI0;
|
||||||
|
if (tpm)
|
||||||
|
tpm->enabled = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!IS_ENABLED(CONFIG_FIZZ_USE_I2C_TPM)) {
|
if (!IS_ENABLED(CONFIG_FIZZ_USE_I2C_TPM)) {
|
||||||
tpm = PCH_DEV_I2C1;
|
tpm = PCH_DEV_I2C1;
|
||||||
if (tpm)
|
if (tpm)
|
||||||
|
|
Loading…
Reference in New Issue