aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/google/dragonegg/variants/baseboard/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/google/dragonegg/variants/baseboard/gpio.c')
-rw-r--r--src/mainboard/google/dragonegg/variants/baseboard/gpio.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/mainboard/google/dragonegg/variants/baseboard/gpio.c b/src/mainboard/google/dragonegg/variants/baseboard/gpio.c
new file mode 100644
index 0000000000..f1752b9b4d
--- /dev/null
+++ b/src/mainboard/google/dragonegg/variants/baseboard/gpio.c
@@ -0,0 +1,88 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2018 Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <baseboard/gpio.h>
+#include <baseboard/variants.h>
+#include <commonlib/helpers.h>
+
+/* Pad configuration in ramstage*/
+static const struct pad_config gpio_table[] = {
+/* I2S2_SCLK */ PAD_CFG_GPI(GPP_A7, NONE, PLTRST),
+/* I2S2_RXD */ PAD_CFG_GPI(GPP_A10, NONE, PLTRST),
+/* ONBOARD_X4_PCIE_SLOT1_PWREN_N */ PAD_CFG_GPO(GPP_A14, 0, DEEP),
+/* USB_OC_ODL */ PAD_CFG_NF(GPP_A15, NONE, DEEP, NF1),
+/* WLAN_PCIE_WAKE_L */ PAD_CFG_GPI_SCI(GPP_B6, NONE, DEEP, EDGE_SINGLE,
+ INVERT),
+/* PCH_WP_OD */ PAD_CFG_GPI(GPP_B7, UP_20K, DEEP),
+/* PCH_SPI_FPMCU_F7_CS_L */ PAD_CFG_NF(GPP_B23, NONE, DEEP, NF1),
+/* PEN_INT_ODL */ PAD_CFG_GPI(GPP_C2, NONE, PLTRST),
+/* GPP_C5_STRAP */ PAD_CFG_GPO(GPP_C5, 1, DEEP),
+/* TCH_INT_ODL */ PAD_CFG_GPI(GPP_C10, NONE, PLTRST),
+/* TCH_RST_ODL */ PAD_CFG_GPO(GPP_C11, 0, PLTRST),
+/* M2_SHUTDOWN+L */ PAD_CFG_GPO(GPP_C12, 1, PLTRST),
+/* M2_RESET_L */ PAD_CFG_GPO(GPP_C13, 1, PLTRST),
+/* M2_INT_L */ PAD_CFG_GPI(GPP_C14, NONE, PLTRST),
+/* HP_INT_L */ PAD_CFG_GPI(GPP_C15, NONE, PLTRST),
+/* PCH_DEV_INT_ODL */ PAD_CFG_GPI(GPP_C22, NONE, PLTRST),
+/* PCH_DEV_RESET_L */ PAD_CFG_GPO(GPP_C23, 0, PLTRST),
+/* PCI_NVME_CLKREQ_ODL */ PAD_CFG_NF(GPP_D7, UP_20K, PWROK, NF1),
+/* H1_PCH_INT_ODL */ PAD_CFG_GPI_APIC(GPP_D16, UP_20K, PLTRST, LEVEL,
+ INVERT),
+/* GPP_E6_STRAP */ PAD_CFG_GPO(GPP_E6, 1, DEEP),
+/* USB_C0_SBU_1_DC */ PAD_CFG_GPO(GPP_E22, 1, PLTRST),
+/* USB_C0_SBU_2_DC */ PAD_CFG_GPO(GPP_E23, 0, DEEP),
+/* CNV_RF_RESET_N */ PAD_CFG_NF(GPP_F4, DN_20K, PWROK, NF1),
+/* CNV_CLKREQ0 */ PAD_CFG_NF(GPP_F5, DN_20K, PWROK, NF2),
+/* SD_CD# */ PAD_CFG_GPI_GPIO_DRIVER(GPP_G5, UP_20K, DEEP),
+/* SD_WP */ PAD_CFG_NF(GPP_G7, DN_20K, DEEP, NF1),
+/* PCH_MEM_STRAP0 */ PAD_CFG_GPI(GPP_H12, DN_20K, PLTRST),
+/* PCH_MEM_STRAP1 */ PAD_CFG_GPI(GPP_H13, DN_20K, PLTRST),
+/* PCH_MEM_STRAP2 */ PAD_CFG_GPI(GPP_H14, DN_20K, PLTRST),
+/* PCH_MEM_STRAP3 */ PAD_CFG_GPI(GPP_H15, DN_20K, PLTRST),
+};
+/* Early pad configuration in bootblock */
+static const struct pad_config early_gpio_table[] = {
+/* PCH_WP_OD */ PAD_CFG_GPI(GPP_B7, UP_20K, DEEP),
+/* GSPI0_CS# */ PAD_CFG_NF(GPP_B15, NONE, DEEP, NF1),
+/* GSPI0_CLK */ PAD_CFG_NF(GPP_B16, NONE, DEEP, NF1),
+/* GSPI0_MISO */ PAD_CFG_NF(GPP_B17, NONE, DEEP, NF1),
+/* GSPI0_MOSI */ PAD_CFG_NF(GPP_B18, NONE, DEEP, NF1),
+/* H1_PCH_INT_ODL */ PAD_CFG_GPI_APIC(GPP_D16, UP_20K, PLTRST, LEVEL,
+ INVERT),
+};
+
+const struct pad_config *__attribute__((weak)) variant_gpio_table(size_t *num)
+{
+ *num = ARRAY_SIZE(gpio_table);
+ return gpio_table;
+}
+
+const struct pad_config *__attribute__((weak))
+ variant_early_gpio_table(size_t *num)
+{
+ *num = ARRAY_SIZE(early_gpio_table);
+ return early_gpio_table;
+}
+
+static const struct cros_gpio cros_gpios[] = {
+ CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, CROS_GPIO_DEVICE_NAME),
+ CROS_GPIO_WP_AH(39, CROS_GPIO_DEVICE_NAME),
+};
+
+const struct cros_gpio *__attribute__((weak)) variant_cros_gpios(size_t *num)
+{
+ *num = ARRAY_SIZE(cros_gpios);
+ return cros_gpios;
+}