summaryrefslogtreecommitdiff
path: root/src/mainboard/google/brya/variants/nivviks/gpio.c
diff options
context:
space:
mode:
authorReka Norman <rekanorman@google.com>2021-12-23 08:19:14 +1100
committerFelix Held <felix-coreboot@felixheld.de>2022-02-03 14:48:30 +0000
commit880f70660debb3cc125c44cde83601c5f98e4001 (patch)
tree6f7e43f51c526aa98f42255f99bd39d9992770dc /src/mainboard/google/brya/variants/nivviks/gpio.c
parent687793d3c085c9d36d376164abb55f8080973a21 (diff)
mb/google/brya: Add GPIO table for nissa
Fill in the nissa baseboard GPIO table based on the nivviks P0 and nereid P0 schematics. Also, add an override GPIO table for each of nivviks and nereid. The differences between nivviks and nereid are: - WFC: nivviks has a MIPI WFC and nereid has a USB WFC, so the MIPI-related pins are overriden to NC on nereid. - The DMIC pins and speaker I2S pins were swapped after nivviks P0. The baseboard reflects the new configuration, which will be used in nivviks P1 onwards, nereid, and future variants. For now, nivviks overrides the pins to the old configuration. Once nivviks P1 is released, this will need to be updated to handle both. BUG=b:197479026 TEST=abuild -a -x -c max -p none -t google/brya -b nivviks abuild -a -x -c max -p none -t google/brya -b nereid Change-Id: Ic923fd22abcaf7da0c607f66705a6e16c14cf8f2 Signed-off-by: Reka Norman <rekanorman@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/60995 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kangheui Won <khwon@chromium.org>
Diffstat (limited to 'src/mainboard/google/brya/variants/nivviks/gpio.c')
-rw-r--r--src/mainboard/google/brya/variants/nivviks/gpio.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/mainboard/google/brya/variants/nivviks/gpio.c b/src/mainboard/google/brya/variants/nivviks/gpio.c
new file mode 100644
index 0000000000..e12356754b
--- /dev/null
+++ b/src/mainboard/google/brya/variants/nivviks/gpio.c
@@ -0,0 +1,60 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <baseboard/gpio.h>
+#include <baseboard/variants.h>
+#include <commonlib/helpers.h>
+#include <soc/gpio.h>
+
+/* Pad configuration in ramstage */
+static const struct pad_config override_gpio_table[] = {
+ /* R4 : I2S2_SCLK ==> I2S_SPK_BCLK_R */
+ PAD_CFG_NF(GPP_R4, NONE, DEEP, NF2),
+ /* R5 : I2S2_SFRM ==> I2S_SPK_LRCK_R */
+ PAD_CFG_NF(GPP_R5, NONE, DEEP, NF2),
+ /* R6 : I2S2_TXD ==> I2S_SPK_AUDIO_R */
+ PAD_CFG_NF(GPP_R6, NONE, DEEP, NF2),
+ /* R7 : I2S2_RXD ==> NC */
+ PAD_NC(GPP_R7, NONE),
+ /* S0 : NC */
+ PAD_NC(GPP_S0, NONE),
+ /* S1 : NC */
+ PAD_NC(GPP_S1, NONE),
+ /* S2 : DMIC_CKL_A_0 ==> DMIC_UCAM_CLK_R */
+ PAD_CFG_NF(GPP_S2, NONE, DEEP, NF2),
+ /* S3 : DMIC_DATA_0 ==> DMIC_UCAM_DATA */
+ PAD_CFG_NF(GPP_S3, NONE, DEEP, NF2),
+ /* S6 : DMIC_CLK_A_1 ==> DMIC_WCAM_CLK_R */
+ PAD_CFG_NF(GPP_S6, NONE, DEEP, NF2),
+ /* S7 : DMIC_DATA_1 ==> DMIC_WCAM_DATA */
+ PAD_CFG_NF(GPP_S6, NONE, DEEP, NF2),
+};
+
+/* Early pad configuration in bootblock */
+static const struct pad_config early_gpio_table[] = {
+ /* A13 : GPP_A13 ==> GSC_SOC_INT_ODL */
+ PAD_CFG_GPI_APIC(GPP_A13, NONE, PLTRST, LEVEL, INVERT),
+ /* E12 : THC0_SPI1_IO1 ==> SOC_WP_OD */
+ PAD_CFG_GPI_GPIO_DRIVER(GPP_E12, NONE, DEEP),
+ /* F18 : THC1_SPI2_INT# ==> EC_IN_RW_OD */
+ PAD_CFG_GPI(GPP_F18, NONE, DEEP),
+ /* H4 : I2C0_SDA ==> SOC_I2C_GSC_SDA */
+ PAD_CFG_NF(GPP_H4, NONE, DEEP, NF1),
+ /* H5 : I2C0_SCL ==> SOC_I2C_GSC_SCL */
+ PAD_CFG_NF(GPP_H5, NONE, DEEP, NF1),
+ /* H10 : UART0_RXD ==> UART_SOC_RX_DBG_TX */
+ PAD_CFG_NF(GPP_H10, NONE, DEEP, NF2),
+ /* H11 : UART0_TXD ==> UART_SOC_TX_DBG_RX */
+ PAD_CFG_NF(GPP_H11, NONE, DEEP, NF2),
+};
+
+const struct pad_config *variant_gpio_override_table(size_t *num)
+{
+ *num = ARRAY_SIZE(override_gpio_table);
+ return override_gpio_table;
+}
+
+const struct pad_config *variant_early_gpio_table(size_t *num)
+{
+ *num = ARRAY_SIZE(early_gpio_table);
+ return early_gpio_table;
+}