summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bernacki <bernacki@google.com>2023-05-29 11:53:38 +0000
committerMartin L Roth <gaumless@gmail.com>2023-07-14 15:13:33 +0000
commita0bd3e9a972908c428677b2c1541d16ddf9e77a0 (patch)
tree107327f049fc4c59150c041a4ae21cb959d2730b
parent64335176d1445e89a9662a32222116ab19923daa (diff)
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 <bernacki@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/75621 Reviewed-by: Raul Rangel <rrangel@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Yu-Ping Wu <yupingso@google.com> Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com> Reviewed-by: Martin L Roth <gaumless@gmail.com>
-rw-r--r--src/mainboard/google/guybrush/Kconfig5
-rw-r--r--src/mainboard/google/guybrush/variants/baseboard/Makefile.inc3
-rw-r--r--src/mainboard/google/guybrush/variants/baseboard/tpm_tis.c16
-rw-r--r--src/mainboard/google/guybrush/variants/nipperkin/Makefile.inc4
-rw-r--r--src/mainboard/google/guybrush/variants/nipperkin/tpm_tis.c13
-rw-r--r--src/mainboard/google/kahlee/Kconfig4
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/Makefile.inc4
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/tpm_tis.c10
-rw-r--r--src/mainboard/google/myst/Kconfig4
-rw-r--r--src/mainboard/google/myst/variants/baseboard/Makefile.inc3
-rw-r--r--src/mainboard/google/myst/variants/baseboard/tpm_tis.c9
-rw-r--r--src/mainboard/google/skyrim/Kconfig4
-rw-r--r--src/mainboard/google/skyrim/variants/baseboard/Makefile.inc3
-rw-r--r--src/mainboard/google/skyrim/variants/baseboard/tpm_tis.c9
-rw-r--r--src/mainboard/google/zork/Kconfig4
-rw-r--r--src/mainboard/google/zork/variants/baseboard/Makefile.inc3
-rw-r--r--src/mainboard/google/zork/variants/baseboard/tpm_tis.c10
-rw-r--r--src/soc/amd/common/block/gpio/Kconfig6
-rw-r--r--src/soc/amd/common/block/gpio/Makefile.inc4
-rw-r--r--src/soc/amd/common/block/gpio/tpm_tis.c18
-rw-r--r--src/soc/amd/common/block/include/amdblocks/gpio.h3
21 files changed, 69 insertions, 70 deletions
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 <boardid.h>
-#include <drivers/tpm/cr50.h>
-#include <gpio.h>
-
-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 <boardid.h>
+#include <gpio.h>
+#include <drivers/tpm/cr50.h>
+
+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 <drivers/tpm/cr50.h>
-#include <gpio.h>
-#include <variant/gpio.h>
-
-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 <drivers/tpm/cr50.h>
-#include <gpio.h>
-
-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 <drivers/tpm/cr50.h>
-#include <gpio.h>
-
-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 <drivers/tpm/cr50.h>
-#include <gpio.h>
-#include <variant/gpio.h>
-
-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 <drivers/tpm/cr50.h>
+#include <gpio.h>
+
+__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 */