summaryrefslogtreecommitdiffstats
path: root/src/mainboard/google/brya/variants/nereid
diff options
context:
space:
mode:
authorReka Norman <rekanorman@google.com>2022-04-04 17:43:58 +1000
committerPatrick Georgi <patrick@coreboot.org>2022-04-07 08:15:14 +0000
commit1a8ecb64387487df326a3fbf20f59ef2f874c5a2 (patch)
tree154c22279b7a4901df5e9bfdd94228b313f58f6c /src/mainboard/google/brya/variants/nereid
parent07bb783c4b509641100e78165680502ee73fa7c0 (diff)
downloadcoreboot-1a8ecb64387487df326a3fbf20f59ef2f874c5a2.tar.gz
coreboot-1a8ecb64387487df326a3fbf20f59ef2f874c5a2.tar.bz2
coreboot-1a8ecb64387487df326a3fbf20f59ef2f874c5a2.zip
mb/google/brya/var/nereid: Add WLAN power sequence
There are currently two issues related to the WLAN power sequencing on nereid: - If the EN pin GPP_B11 is not high during cold boot, the SoC gets stuck in S3. - During warm reboot, if we only assert RST without pulling the power low, then the kernel crashes. As a workaround while we investigate these issues, we pull the EN high in S5, then actively drive it low in bootblock and high in romstage to make sure it goes low during warm reboot. BUG=b:227694137, b:225261075 TEST=Cold boot succeeds, and there's no kernel crash during warm reboot. Change-Id: I1ca46d9649eff3f96a0e77db594d87288b29a83a Signed-off-by: Reka Norman <rekanorman@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/63368 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kangheui Won <khwon@chromium.org> Reviewed-by: Sam McNally <sammc@google.com>
Diffstat (limited to 'src/mainboard/google/brya/variants/nereid')
-rw-r--r--src/mainboard/google/brya/variants/nereid/gpio.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mainboard/google/brya/variants/nereid/gpio.c b/src/mainboard/google/brya/variants/nereid/gpio.c
index f9ef8c99536e..f011e2fa1794 100644
--- a/src/mainboard/google/brya/variants/nereid/gpio.c
+++ b/src/mainboard/google/brya/variants/nereid/gpio.c
@@ -41,6 +41,10 @@ static const struct pad_config override_gpio_table[] = {
/* Early pad configuration in bootblock */
static const struct pad_config early_gpio_table[] = {
+ /* B11 : PMCALERT# ==> EN_PP3300_WLAN_X */
+ PAD_CFG_GPO(GPP_B11, 0, DEEP),
+ /* H20 : IMGCLKOUT1 ==> WLAN_PERST_L */
+ PAD_CFG_GPO(GPP_H20, 0, DEEP),
/* A13 : GPP_A13 ==> GSC_SOC_INT_ODL */
PAD_CFG_GPI_APIC(GPP_A13, NONE, PLTRST, LEVEL, INVERT),
/* E12 : THC0_SPI1_IO1 ==> SOC_WP_OD */
@@ -57,6 +61,11 @@ static const struct pad_config early_gpio_table[] = {
PAD_CFG_NF(GPP_H11, NONE, DEEP, NF2),
};
+static const struct pad_config romstage_gpio_table[] = {
+ /* B11 : PMCALERT# ==> EN_PP3300_WLAN_X */
+ PAD_CFG_GPO(GPP_B11, 1, DEEP),
+};
+
const struct pad_config *variant_gpio_override_table(size_t *num)
{
*num = ARRAY_SIZE(override_gpio_table);
@@ -68,3 +77,9 @@ const struct pad_config *variant_early_gpio_table(size_t *num)
*num = ARRAY_SIZE(early_gpio_table);
return early_gpio_table;
}
+
+const struct pad_config *variant_romstage_gpio_table(size_t *num)
+{
+ *num = ARRAY_SIZE(romstage_gpio_table);
+ return romstage_gpio_table;
+}