From 0863f7cdb28cd201e7cd6f399fc90165c4600d7b Mon Sep 17 00:00:00 2001 From: Nick Vaccaro Date: Fri, 17 Nov 2023 12:46:46 -0800 Subject: [PATCH] mb/goog/brya/var/brya0/skolas: Disable HPS GPIOs if HPS_ABSENT Check FW_CONFIG and disable gpios for HPS if HPS_ABSENT for skolas and brya0 variants. BUG=b:311740746 BRANCH=firmware-brya-14505.B TEST=`emerge-brya coreboot chromeos-bootimage`, flash and boot skolas to kernel and verify via "cbmem -c | grep HPS". Change-Id: I8cbe4f40c41f1d06e8f511c3e88c05984566d441 Signed-off-by: Nick Vaccaro Reviewed-on: https://review.coreboot.org/c/coreboot/+/79123 Tested-by: build bot (Jenkins) Reviewed-by: Eric Lai --- .../google/brya/variants/brya0/fw_config.c | 14 ++++++++++++++ .../google/brya/variants/skolas/fw_config.c | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/mainboard/google/brya/variants/brya0/fw_config.c b/src/mainboard/google/brya/variants/brya0/fw_config.c index e50c5e4159..cd595ac19a 100644 --- a/src/mainboard/google/brya/variants/brya0/fw_config.c +++ b/src/mainboard/google/brya/variants/brya0/fw_config.c @@ -123,6 +123,15 @@ static const struct pad_config lte_disable_pads[] = { PAD_NC(GPD11, NONE), }; +static const struct pad_config hps_disable_pads[] = { + /* E3 : PROC_GP0 ==> HPS_INT_ODL */ + PAD_NC(GPP_E3, NONE), + /* E7 : PROC_GP1 ==> EN_HPS_PWR */ + PAD_NC(GPP_E7, NONE), + /* F20 : EXT_PWR_GATE# ==> HPS_RST_R */ + PAD_NC(GPP_F20, NONE), +}; + static void enable_i2s(void) { gpio_configure_pads(dmic_enable_pads, ARRAY_SIZE(dmic_enable_pads)); @@ -183,5 +192,10 @@ static void fw_config_handle(void *unused) printk(BIOS_INFO, "Disable LTE related GPIO pins.\n"); gpio_configure_pads(lte_disable_pads, ARRAY_SIZE(lte_disable_pads)); } + + if (fw_config_probe(FW_CONFIG(HPS, HPS_ABSENT))) { + printk(BIOS_INFO, "Disable HPS related GPIO pins.\n"); + gpio_configure_pads(hps_disable_pads, ARRAY_SIZE(hps_disable_pads)); + } } BOOT_STATE_INIT_ENTRY(BS_DEV_ENABLE, BS_ON_ENTRY, fw_config_handle, NULL); diff --git a/src/mainboard/google/brya/variants/skolas/fw_config.c b/src/mainboard/google/brya/variants/skolas/fw_config.c index e50c5e4159..86246dbb2d 100644 --- a/src/mainboard/google/brya/variants/skolas/fw_config.c +++ b/src/mainboard/google/brya/variants/skolas/fw_config.c @@ -100,6 +100,15 @@ static const struct pad_config bt_i2s_disable_pads[] = { PAD_NC(GPP_VGPIO_37, NONE), }; +static const struct pad_config hps_disable_pads[] = { + /* E3 : PROC_GP0 ==> HPS_INT_ODL */ + PAD_NC(GPP_E3, NONE), + /* E7 : PROC_GP1 ==> EN_HPS_PWR */ + PAD_NC(GPP_E7, NONE), + /* F20 : EXT_PWR_GATE# ==> HPS_RST_R */ + PAD_NC(GPP_F20, NONE), +}; + static const struct pad_config lte_disable_pads[] = { /* A7 : WWAN_PCIE_WAKE_ODL */ PAD_NC(GPP_A7, NONE), @@ -183,5 +192,10 @@ static void fw_config_handle(void *unused) printk(BIOS_INFO, "Disable LTE related GPIO pins.\n"); gpio_configure_pads(lte_disable_pads, ARRAY_SIZE(lte_disable_pads)); } + + if (fw_config_probe(FW_CONFIG(HPS, HPS_ABSENT))) { + printk(BIOS_INFO, "Disable HPS related GPIO pins.\n"); + gpio_configure_pads(hps_disable_pads, ARRAY_SIZE(hps_disable_pads)); + } } BOOT_STATE_INIT_ENTRY(BS_DEV_ENABLE, BS_ON_ENTRY, fw_config_handle, NULL);