From a0bd3e9a972908c428677b2c1541d16ddf9e77a0 Mon Sep 17 00:00:00 2001 From: Grzegorz Bernacki Date: Mon, 29 May 2023 11:53:38 +0000 Subject: [PATCH] mb/google: AMD: move tpm_tis to AMD common code It moves cr50_plat_irq_status() to common code and adds Kconfig option to specify GPIO used for interrupt. BUG=b:277787305 TEST=Build all affected platform and confirm using right GPIO number. Tested on Skyrim. Change-Id: I775c4e24cffee99b6ac3e05b58a75425029a86c8 Signed-off-by: Grzegorz Bernacki Reviewed-on: https://review.coreboot.org/c/coreboot/+/75621 Reviewed-by: Raul Rangel Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu Reviewed-by: Eric Lai Reviewed-by: Martin L Roth --- src/mainboard/google/guybrush/Kconfig | 5 +++++ .../guybrush/variants/baseboard/Makefile.inc | 3 --- .../guybrush/variants/baseboard/tpm_tis.c | 16 ---------------- .../guybrush/variants/nipperkin/Makefile.inc | 4 ++++ .../guybrush/variants/nipperkin/tpm_tis.c | 13 +++++++++++++ src/mainboard/google/kahlee/Kconfig | 4 ++++ .../kahlee/variants/baseboard/Makefile.inc | 4 ---- .../google/kahlee/variants/baseboard/tpm_tis.c | 10 ---------- src/mainboard/google/myst/Kconfig | 4 ++++ .../myst/variants/baseboard/Makefile.inc | 3 --- .../google/myst/variants/baseboard/tpm_tis.c | 9 --------- src/mainboard/google/skyrim/Kconfig | 4 ++++ .../skyrim/variants/baseboard/Makefile.inc | 3 --- .../google/skyrim/variants/baseboard/tpm_tis.c | 9 --------- src/mainboard/google/zork/Kconfig | 4 ++++ .../zork/variants/baseboard/Makefile.inc | 3 --- .../google/zork/variants/baseboard/tpm_tis.c | 10 ---------- src/soc/amd/common/block/gpio/Kconfig | 6 ++++++ src/soc/amd/common/block/gpio/Makefile.inc | 4 ++++ src/soc/amd/common/block/gpio/tpm_tis.c | 18 ++++++++++++++++++ .../amd/common/block/include/amdblocks/gpio.h | 3 +++ 21 files changed, 69 insertions(+), 70 deletions(-) delete mode 100644 src/mainboard/google/guybrush/variants/baseboard/tpm_tis.c create mode 100644 src/mainboard/google/guybrush/variants/nipperkin/tpm_tis.c delete mode 100644 src/mainboard/google/kahlee/variants/baseboard/tpm_tis.c delete mode 100644 src/mainboard/google/myst/variants/baseboard/tpm_tis.c delete mode 100644 src/mainboard/google/skyrim/variants/baseboard/tpm_tis.c delete mode 100644 src/mainboard/google/zork/variants/baseboard/tpm_tis.c create mode 100644 src/soc/amd/common/block/gpio/tpm_tis.c diff --git a/src/mainboard/google/guybrush/Kconfig b/src/mainboard/google/guybrush/Kconfig index 50bcfa966b..8ddd3b1fe9 100644 --- a/src/mainboard/google/guybrush/Kconfig +++ b/src/mainboard/google/guybrush/Kconfig @@ -95,6 +95,11 @@ config DRIVER_TPM_I2C_ADDR hex default 0x50 +config GSC_IRQ_GPIO + int + default 3 if BOARD_GOOGLE_GUYBRUSH + default 85 + config AMDFW_CONFIG_FILE string default "src/mainboard/google/guybrush/variants/baseboard/amdfw.cfg" diff --git a/src/mainboard/google/guybrush/variants/baseboard/Makefile.inc b/src/mainboard/google/guybrush/variants/baseboard/Makefile.inc index d8fce0a6eb..cfd3faa6a6 100644 --- a/src/mainboard/google/guybrush/variants/baseboard/Makefile.inc +++ b/src/mainboard/google/guybrush/variants/baseboard/Makefile.inc @@ -2,14 +2,11 @@ bootblock-y += gpio.c bootblock-y += helpers.c romstage-y += helpers.c -romstage-y += tpm_tis.c romstage-y += gpio.c ramstage-y += gpio.c ramstage-y += helpers.c -ramstage-y += tpm_tis.c verstage-y += gpio.c -verstage-y += tpm_tis.c smm-y += gpio.c diff --git a/src/mainboard/google/guybrush/variants/baseboard/tpm_tis.c b/src/mainboard/google/guybrush/variants/baseboard/tpm_tis.c deleted file mode 100644 index bc4091527f..0000000000 --- a/src/mainboard/google/guybrush/variants/baseboard/tpm_tis.c +++ /dev/null @@ -1,16 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include -#include -#include - -int cr50_plat_irq_status(void) -{ - gpio_t irq_gpio = GPIO_85; - uint32_t board_ver = board_id(); - - if (CONFIG(BOARD_GOOGLE_GUYBRUSH) || (CONFIG(BOARD_GOOGLE_NIPPERKIN) && board_ver == 1)) - irq_gpio = GPIO_3; - - return gpio_interrupt_status(irq_gpio); -} diff --git a/src/mainboard/google/guybrush/variants/nipperkin/Makefile.inc b/src/mainboard/google/guybrush/variants/nipperkin/Makefile.inc index d7ec6dd5a2..14ecf5ecbb 100644 --- a/src/mainboard/google/guybrush/variants/nipperkin/Makefile.inc +++ b/src/mainboard/google/guybrush/variants/nipperkin/Makefile.inc @@ -5,6 +5,10 @@ romstage-y += gpio.c ramstage-y += gpio.c verstage-y += gpio.c +romstage-y += tpm_tis.c +ramstage-y += tpm_tis.c +verstage-y += tpm_tis.c + bootblock-y += variant.c romstage-y += variant.c ramstage-y += variant.c diff --git a/src/mainboard/google/guybrush/variants/nipperkin/tpm_tis.c b/src/mainboard/google/guybrush/variants/nipperkin/tpm_tis.c new file mode 100644 index 0000000000..010499f087 --- /dev/null +++ b/src/mainboard/google/guybrush/variants/nipperkin/tpm_tis.c @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include +#include + +gpio_t cr50_override_gpio(gpio_t irq) +{ + if (board_id() == 1) + return GPIO_3; + else + return irq; +} diff --git a/src/mainboard/google/kahlee/Kconfig b/src/mainboard/google/kahlee/Kconfig index 3507181083..92896e9d26 100644 --- a/src/mainboard/google/kahlee/Kconfig +++ b/src/mainboard/google/kahlee/Kconfig @@ -116,6 +116,10 @@ config DRIVER_TPM_I2C_ADDR hex default 0x50 +config GSC_IRQ_GPIO + int + default 9 + config USE_OEM_BIN bool "Add an oem.bin file" help diff --git a/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc b/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc index a41ba22e8b..be4074d28c 100644 --- a/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc +++ b/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc @@ -3,16 +3,12 @@ bootblock-y += gpio.c bootblock-y += OemCustomize.c -verstage-y += tpm_tis.c - romstage-y += OemCustomize.c romstage-y += gpio.c romstage-y += memory.c -romstage-y += tpm_tis.c ramstage-y += gpio.c ramstage-y += mainboard.c -ramstage-y += tpm_tis.c # Add OEM ID table ifeq ($(CONFIG_USE_OEM_BIN),y) diff --git a/src/mainboard/google/kahlee/variants/baseboard/tpm_tis.c b/src/mainboard/google/kahlee/variants/baseboard/tpm_tis.c deleted file mode 100644 index 87b7f45dc9..0000000000 --- a/src/mainboard/google/kahlee/variants/baseboard/tpm_tis.c +++ /dev/null @@ -1,10 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include -#include -#include - -int cr50_plat_irq_status(void) -{ - return gpio_interrupt_status(GPIO_9); -} diff --git a/src/mainboard/google/myst/Kconfig b/src/mainboard/google/myst/Kconfig index bfa4d03be3..3680e18e6b 100644 --- a/src/mainboard/google/myst/Kconfig +++ b/src/mainboard/google/myst/Kconfig @@ -44,6 +44,10 @@ config DRIVER_TPM_I2C_ADDR hex default 0x50 +config GSC_IRQ_GPIO + int + default 84 + config FMDFILE default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/chromeos.fmd" diff --git a/src/mainboard/google/myst/variants/baseboard/Makefile.inc b/src/mainboard/google/myst/variants/baseboard/Makefile.inc index 74839fa863..9e9ec0dc53 100644 --- a/src/mainboard/google/myst/variants/baseboard/Makefile.inc +++ b/src/mainboard/google/myst/variants/baseboard/Makefile.inc @@ -2,12 +2,9 @@ bootblock-y += gpio.c ramstage-$(CONFIG_FW_CONFIG) += fw_config.c ramstage-y += gpio.c -ramstage-y += tpm_tis.c romstage-y += gpio.c -romstage-y += tpm_tis.c -verstage-y += tpm_tis.c verstage-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += gpio.c smm-y += smihandler.c diff --git a/src/mainboard/google/myst/variants/baseboard/tpm_tis.c b/src/mainboard/google/myst/variants/baseboard/tpm_tis.c deleted file mode 100644 index 3641e7abd9..0000000000 --- a/src/mainboard/google/myst/variants/baseboard/tpm_tis.c +++ /dev/null @@ -1,9 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include -#include - -int cr50_plat_irq_status(void) -{ - return gpio_interrupt_status(GPIO_84); -} diff --git a/src/mainboard/google/skyrim/Kconfig b/src/mainboard/google/skyrim/Kconfig index 49762dcaf2..9b81502c7d 100644 --- a/src/mainboard/google/skyrim/Kconfig +++ b/src/mainboard/google/skyrim/Kconfig @@ -60,6 +60,10 @@ config DRIVER_TPM_I2C_ADDR hex default 0x50 +config GSC_IRQ_GPIO + int + default 18 + config AMDFW_CONFIG_FILE string default "src/mainboard/\$(CONFIG_MAINBOARD_DIR)/amdfw.cfg" diff --git a/src/mainboard/google/skyrim/variants/baseboard/Makefile.inc b/src/mainboard/google/skyrim/variants/baseboard/Makefile.inc index bd27f68128..7828cf1bff 100644 --- a/src/mainboard/google/skyrim/variants/baseboard/Makefile.inc +++ b/src/mainboard/google/skyrim/variants/baseboard/Makefile.inc @@ -1,12 +1,9 @@ bootblock-y += gpio.c romstage-y += gpio.c -romstage-y += tpm_tis.c ramstage-y += gpio.c -ramstage-y += tpm_tis.c -verstage-y += tpm_tis.c verstage-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += gpio.c smm-y += gpio.c diff --git a/src/mainboard/google/skyrim/variants/baseboard/tpm_tis.c b/src/mainboard/google/skyrim/variants/baseboard/tpm_tis.c deleted file mode 100644 index b3ab49aee3..0000000000 --- a/src/mainboard/google/skyrim/variants/baseboard/tpm_tis.c +++ /dev/null @@ -1,9 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include -#include - -int cr50_plat_irq_status(void) -{ - return gpio_interrupt_status(GPIO_18); -} diff --git a/src/mainboard/google/zork/Kconfig b/src/mainboard/google/zork/Kconfig index 3481810d68..d01b023792 100644 --- a/src/mainboard/google/zork/Kconfig +++ b/src/mainboard/google/zork/Kconfig @@ -138,6 +138,10 @@ config DRIVER_TPM_I2C_ADDR hex default 0x50 +config GSC_IRQ_GPIO + int + default 3 + config VARIANT_SUPPORTS_PRE_V3_SCHEMATICS bool default y if BOARD_GOOGLE_TREMBYLE diff --git a/src/mainboard/google/zork/variants/baseboard/Makefile.inc b/src/mainboard/google/zork/variants/baseboard/Makefile.inc index 2a35748b03..21d6a8f9cf 100644 --- a/src/mainboard/google/zork/variants/baseboard/Makefile.inc +++ b/src/mainboard/google/zork/variants/baseboard/Makefile.inc @@ -2,9 +2,6 @@ all-y += helpers.c -verstage-y += tpm_tis.c -romstage-y += tpm_tis.c -ramstage-y += tpm_tis.c ramstage-y += ramstage_common.c # Add OEM ID table diff --git a/src/mainboard/google/zork/variants/baseboard/tpm_tis.c b/src/mainboard/google/zork/variants/baseboard/tpm_tis.c deleted file mode 100644 index 822349288a..0000000000 --- a/src/mainboard/google/zork/variants/baseboard/tpm_tis.c +++ /dev/null @@ -1,10 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include -#include -#include - -int cr50_plat_irq_status(void) -{ - return gpio_interrupt_status(GPIO_3); -} diff --git a/src/soc/amd/common/block/gpio/Kconfig b/src/soc/amd/common/block/gpio/Kconfig index 0a1bffee81..707c6d0775 100644 --- a/src/soc/amd/common/block/gpio/Kconfig +++ b/src/soc/amd/common/block/gpio/Kconfig @@ -18,3 +18,9 @@ config SOC_AMD_COMMON_BLOCK_BANKED_GPIOS_NON_SOC_CODEBASE code. endif # SOC_AMD_COMMON_BLOCK_BANKED_GPIOS + +config GSC_IRQ_GPIO + int + help + gpio_interrupt_status() is used to provide interrupt status to TPM layer. + This option specifies the GPIO number. diff --git a/src/soc/amd/common/block/gpio/Makefile.inc b/src/soc/amd/common/block/gpio/Makefile.inc index 64fbe27c7c..3de522e26c 100644 --- a/src/soc/amd/common/block/gpio/Makefile.inc +++ b/src/soc/amd/common/block/gpio/Makefile.inc @@ -4,4 +4,8 @@ ifeq ($(CONFIG_SOC_AMD_COMMON_BLOCK_BANKED_GPIOS),y) all-y += gpio.c smm-y += gpio.c +romstage-$(CONFIG_TPM_GOOGLE) += tpm_tis.c +ramstage-$(CONFIG_TPM_GOOGLE) += tpm_tis.c +verstage-$(CONFIG_TPM_GOOGLE) += tpm_tis.c + endif # CONFIG_SOC_AMD_COMMON_BLOCK_BANKED_GPIOS diff --git a/src/soc/amd/common/block/gpio/tpm_tis.c b/src/soc/amd/common/block/gpio/tpm_tis.c new file mode 100644 index 0000000000..785bd58199 --- /dev/null +++ b/src/soc/amd/common/block/gpio/tpm_tis.c @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include + +__weak gpio_t cr50_override_gpio(gpio_t irq) +{ + return irq; +} + +int cr50_plat_irq_status(void) +{ + gpio_t irq_gpio = CONFIG_GSC_IRQ_GPIO; + + irq_gpio = cr50_override_gpio(irq_gpio); + + return gpio_interrupt_status(irq_gpio); +} diff --git a/src/soc/amd/common/block/include/amdblocks/gpio.h b/src/soc/amd/common/block/include/amdblocks/gpio.h index 020a09dc2c..6c4857d723 100644 --- a/src/soc/amd/common/block/include/amdblocks/gpio.h +++ b/src/soc/amd/common/block/include/amdblocks/gpio.h @@ -92,4 +92,7 @@ void soc_get_gpio_event_table(const struct soc_amd_event **table, size_t *items) void gpio_save_pin_registers(gpio_t gpio, struct soc_amd_gpio_register_save *save); void gpio_restore_pin_registers(gpio_t gpio, struct soc_amd_gpio_register_save *save); +/* Overrides Kconfig GPIO number */ +gpio_t cr50_override_gpio(gpio_t irq); + #endif /* AMD_BLOCK_GPIO_BANKS_H */