summaryrefslogtreecommitdiffstats
path: root/src/mainboard/bostentech/gbyt4/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/bostentech/gbyt4/gpio.c')
-rw-r--r--src/mainboard/bostentech/gbyt4/gpio.c210
1 files changed, 210 insertions, 0 deletions
diff --git a/src/mainboard/bostentech/gbyt4/gpio.c b/src/mainboard/bostentech/gbyt4/gpio.c
new file mode 100644
index 000000000000..e1d5df8bbb2e
--- /dev/null
+++ b/src/mainboard/bostentech/gbyt4/gpio.c
@@ -0,0 +1,210 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <soc/gpio.h>
+
+/* NCORE GPIOs */
+static const struct soc_gpio_map gpncore_gpio_map[] = {
+ GPIO_INPUT, /* GPIO_S0_NC[00] */
+ GPIO_INPUT, /* GPIO_S0_NC[01] */
+ GPIO_INPUT, /* GPIO_S0_NC[02] */
+ GPIO_INPUT, /* GPIO_S0_NC[03] */
+ GPIO_INPUT, /* GPIO_S0_NC[04] */
+ GPIO_INPUT, /* GPIO_S0_NC[05] */
+ GPIO_INPUT, /* GPIO_S0_NC[06] */
+ GPIO_INPUT, /* GPIO_S0_NC[07] */
+ GPIO_INPUT, /* GPIO_S0_NC[08] */
+ GPIO_INPUT, /* GPIO_S0_NC[09] */
+ GPIO_INPUT, /* GPIO_S0_NC[10] */
+ GPIO_INPUT, /* GPIO_S0_NC[11] */
+ GPIO_INPUT, /* GPIO_S0_NC[12] */
+ GPIO_INPUT, /* GPIO_S0_NC[13] */
+ GPIO_INPUT, /* GPIO_S0_NC[14] */
+ GPIO_INPUT, /* GPIO_S0_NC[15] */
+ GPIO_INPUT, /* GPIO_S0_NC[16] */
+ GPIO_INPUT, /* GPIO_S0_NC[17] */
+ GPIO_INPUT, /* GPIO_S0_NC[18] */
+ GPIO_INPUT, /* GPIO_S0_NC[19] */
+ GPIO_INPUT, /* GPIO_S0_NC[20] */
+ GPIO_INPUT, /* GPIO_S0_NC[21] */
+ GPIO_INPUT, /* GPIO_S0_NC[22] */
+ GPIO_INPUT, /* GPIO_S0_NC[23] */
+ GPIO_INPUT, /* GPIO_S0_NC[24] */
+ GPIO_INPUT, /* GPIO_S0_NC[25] */
+ GPIO_INPUT, /* GPIO_S0_NC[26] */
+ GPIO_END
+};
+
+/* SCORE GPIOs */
+static const struct soc_gpio_map gpscore_gpio_map[] = {
+ GPIO_INPUT, /* GPIO_S0_SC[000] */
+ GPIO_INPUT, /* GPIO_S0_SC[001] */
+ GPIO_FUNC1, /* SATA_LED# */
+ GPIO_FUNC1, /* PCIE_CLKREQ[0]# */
+ GPIO_FUNC1, /* PCIE_CLKREQ[1]# */
+ GPIO_FUNC1, /* PCIE_CLKREQ[2]# */
+ GPIO_FUNC1, /* PCIE_CLKREQ[3]# */
+ GPIO_INPUT, /* GPIO_S0_SC[007] */
+ GPIO_INPUT, /* GPIO_S0_SC[008] */
+ GPIO_INPUT, /* GPIO_S0_SC[009] */
+ GPIO_INPUT, /* GPIO_S0_SC[010] */
+ GPIO_INPUT, /* GPIO_S0_SC[011] */
+ GPIO_INPUT, /* GPIO_S0_SC[012] */
+ GPIO_INPUT, /* GPIO_S0_SC[013] */
+ GPIO_INPUT, /* GPIO_S0_SC[014] */
+ GPIO_INPUT, /* GPIO_S0_SC[015] */
+ GPIO_INPUT, /* GPIO_S0_SC[016] */
+ GPIO_INPUT, /* GPIO_S0_SC[017] */
+ GPIO_INPUT, /* GPIO_S0_SC[018] */
+ GPIO_INPUT, /* GPIO_S0_SC[019] */
+ GPIO_INPUT, /* GPIO_S0_SC[020] */
+ GPIO_INPUT, /* GPIO_S0_SC[021] */
+ GPIO_INPUT, /* GPIO_S0_SC[022] */
+ GPIO_INPUT, /* GPIO_S0_SC[023] */
+ GPIO_INPUT, /* GPIO_S0_SC[024] */
+ GPIO_INPUT, /* GPIO_S0_SC[025] */
+ GPIO_INPUT, /* GPIO_S0_SC[026] */
+ GPIO_INPUT, /* GPIO_S0_SC[027] */
+ GPIO_INPUT, /* GPIO_S0_SC[028] */
+ GPIO_INPUT, /* GPIO_S0_SC[029] */
+ GPIO_INPUT, /* GPIO_S0_SC[030] */
+ GPIO_INPUT, /* GPIO_S0_SC[031] */
+ GPIO_INPUT, /* GPIO_S0_SC[032] */
+ GPIO_INPUT, /* GPIO_S0_SC[033] */
+ GPIO_INPUT, /* GPIO_S0_SC[034] */
+ GPIO_INPUT, /* GPIO_S0_SC[035] */
+ GPIO_INPUT, /* GPIO_S0_SC[036] */
+ GPIO_INPUT, /* GPIO_S0_SC[037] */
+ GPIO_INPUT, /* GPIO_S0_SC[038] */
+ GPIO_INPUT, /* GPIO_S0_SC[039] */
+ GPIO_INPUT, /* GPIO_S0_SC[040] */
+ GPIO_INPUT, /* GPIO_S0_SC[041] */
+ GPIO_FUNC1, /* ILB_LPC_AD[0] */
+ GPIO_FUNC1, /* ILB_LPC_AD[1] */
+ GPIO_FUNC1, /* ILB_LPC_AD[2] */
+ GPIO_FUNC1, /* ILB_LPC_AD[3] */
+ GPIO_FUNC1, /* ILB_LPC_FRAME# */
+ GPIO_FUNC1, /* ILB_LPC_CLK[0] */
+ GPIO_FUNC1, /* ILB_LPC_CLK[1] */
+ GPIO_FUNC1, /* ILB_LPC_CLKRUN# */
+ GPIO_FUNC1, /* ILB_LPC_SERIRQ */
+ GPIO_FUNC1, /* PCU_SMB_DATA */
+ GPIO_FUNC1, /* PCU_SMB_CLK */
+ GPIO_FUNC1, /* PCU_SMB_ALERT# */
+ GPIO_FUNC1, /* ILB_8254_SPKR */
+ GPIO_INPUT, /* GPIO_S0_SC[055] */
+ GPIO_INPUT, /* GPIO_S0_SC[056] */
+ GPIO_INPUT, /* GPIO_S0_SC[057] */
+ GPIO_INPUT, /* GPIO_S0_SC[058] */
+ GPIO_INPUT, /* GPIO_S0_SC[059] */
+ GPIO_INPUT, /* GPIO_S0_SC[060] */
+ GPIO_INPUT, /* GPIO_S0_SC[061] */
+ GPIO_INPUT, /* GPIO_S0_SC[062] */
+ GPIO_INPUT, /* GPIO_S0_SC[063] */
+ GPIO_INPUT, /* GPIO_S0_SC[064] */
+ GPIO_INPUT, /* GPIO_S0_SC[065] */
+ GPIO_INPUT, /* GPIO_S0_SC[066] */
+ GPIO_INPUT, /* GPIO_S0_SC[067] */
+ GPIO_INPUT, /* GPIO_S0_SC[068] */
+ GPIO_INPUT, /* GPIO_S0_SC[069] */
+ GPIO_INPUT, /* GPIO_S0_SC[070] */
+ GPIO_INPUT, /* GPIO_S0_SC[071] */
+ GPIO_INPUT, /* GPIO_S0_SC[072] */
+ GPIO_INPUT, /* GPIO_S0_SC[073] */
+ GPIO_INPUT, /* GPIO_S0_SC[074] */
+ GPIO_INPUT, /* GPIO_S0_SC[075] */
+ GPIO_INPUT, /* GPIO_S0_SC[076] */
+ GPIO_INPUT, /* GPIO_S0_SC[077] */
+ GPIO_INPUT, /* GPIO_S0_SC[078] */
+ GPIO_INPUT, /* GPIO_S0_SC[079] */
+ GPIO_INPUT, /* GPIO_S0_SC[080] */
+ GPIO_INPUT, /* GPIO_S0_SC[081] */
+ GPIO_INPUT, /* GPIO_S0_SC[082] */
+ GPIO_INPUT, /* GPIO_S0_SC[083] */
+ GPIO_INPUT, /* GPIO_S0_SC[084] */
+ GPIO_INPUT, /* GPIO_S0_SC[085] */
+ GPIO_INPUT, /* GPIO_S0_SC[086] */
+ GPIO_INPUT, /* GPIO_S0_SC[087] */
+ GPIO_INPUT, /* GPIO_S0_SC[088] */
+ GPIO_INPUT, /* GPIO_S0_SC[089] */
+ GPIO_INPUT, /* GPIO_S0_SC[090] */
+ GPIO_INPUT, /* GPIO_S0_SC[091] */
+ GPIO_INPUT, /* GPIO_S0_SC[092] */
+ GPIO_INPUT, /* GPIO_S0_SC[093] */
+ GPIO_INPUT, /* GPIO_S0_SC[094] */
+ GPIO_INPUT, /* GPIO_S0_SC[095] */
+ GPIO_INPUT, /* GPIO_S0_SC[096] */
+ GPIO_INPUT, /* GPIO_S0_SC[097] */
+ GPIO_INPUT, /* GPIO_S0_SC[098] */
+ GPIO_INPUT, /* GPIO_S0_SC[099] */
+ GPIO_INPUT, /* GPIO_S0_SC[100] */
+ GPIO_INPUT, /* GPIO_S0_SC[101] */
+ GPIO_END
+};
+
+/* SSUS GPIOs */
+static const struct soc_gpio_map gpssus_gpio_map[] = {
+ GPIO_INPUT, /* GPIO_S5[00] */
+ GPIO_FUNC6, /* PMC_WAKE_PCIE[1]# */
+ GPIO_FUNC6, /* PMC_WAKE_PCIE[2]# */
+ GPIO_FUNC6, /* PMC_WAKE_PCIE[3]# */
+ GPIO_INPUT, /* GPIO_S5[04] */
+ GPIO_INPUT, /* GPIO_S5[05] */
+ GPIO_INPUT, /* GPIO_S5[06] */
+ GPIO_INPUT, /* GPIO_S5[07] */
+ GPIO_INPUT, /* GPIO_S5[08] */
+ GPIO_INPUT, /* GPIO_S5[09] */
+ GPIO_INPUT, /* GPIO_S5[10] */
+ GPIO_INPUT, /* GPIO_S5[11] */
+ GPIO_INPUT, /* GPIO_S5[12] */
+ GPIO_INPUT, /* GPIO_S5[13] */
+ GPIO_INPUT, /* GPIO_S5[14] */
+ GPIO_FUNC0, /* PMC_WAKE_PCIE[0]# */
+ GPIO_FUNC(0, PULL_UP, 20K), /* PMC_PWRBTN# */
+ GPIO_INPUT, /* GPIO_S5[17] */
+ GPIO_INPUT, /* GPIO_S5[18] */
+ GPIO_INPUT, /* GPIO_S5[19] */
+ GPIO_INPUT, /* GPIO_S5[20] */
+ GPIO_INPUT, /* GPIO_S5[21] */
+ GPIO_INPUT, /* GPIO_S5[22] */
+ GPIO_INPUT, /* GPIO_S5[23] */
+ GPIO_INPUT, /* GPIO_S5[24] */
+ GPIO_INPUT, /* GPIO_S5[25] */
+ GPIO_INPUT, /* GPIO_S5[26] */
+ GPIO_INPUT, /* GPIO_S5[27] */
+ GPIO_INPUT, /* GPIO_S5[28] */
+ GPIO_INPUT, /* GPIO_S5[29] */
+ GPIO_INPUT, /* GPIO_S5[30] */
+ GPIO_INPUT, /* GPIO_S5[31] */
+ GPIO_INPUT, /* GPIO_S5[32] */
+ GPIO_INPUT, /* GPIO_S5[33] */
+ GPIO_INPUT, /* GPIO_S5[34] */
+ GPIO_INPUT, /* GPIO_S5[35] */
+ GPIO_INPUT, /* GPIO_S5[36] */
+ GPIO_INPUT, /* GPIO_S5[37] */
+ GPIO_INPUT, /* GPIO_S5[38] */
+ GPIO_INPUT, /* GPIO_S5[39] */
+ GPIO_INPUT, /* GPIO_S5[40] */
+ GPIO_INPUT, /* GPIO_S5[41] */
+ GPIO_INPUT, /* GPIO_S5[42] */
+ GPIO_INPUT, /* GPIO_S5[43] */
+ GPIO_END
+};
+
+static const u8 core_dedicated_irq[GPIO_MAX_DIRQS] = {
+};
+
+static const u8 sus_dedicated_irq[GPIO_MAX_DIRQS] = {
+};
+
+static struct soc_gpio_config gpio_config = {
+ .ncore = gpncore_gpio_map,
+ .score = gpscore_gpio_map,
+ .ssus = gpssus_gpio_map,
+ .core_dirq = &core_dedicated_irq,
+ .sus_dirq = &sus_dedicated_irq,
+};
+
+struct soc_gpio_config *mainboard_get_gpios(void)
+{
+ return &gpio_config;
+}