1 /* SPDX-License-Identifier: GPL-2.0-only */
4 #include <mainboard/google/rambi/irqroute.h>
7 static const struct soc_gpio_map gpncore_gpio_map
[] = {
8 GPIO_FUNC2
, /* S0_NC00 - INT_HDMI_HPD - INT */
9 GPIO_FUNC2
, /* S0_NC01 - HDMI_DDCDATA_SW */
10 GPIO_FUNC2
, /* S0_NC02 - HDMI_DDCCLK_SW */
11 GPIO_NC
, /* S0_NC03 - NC */
12 GPIO_NC
, /* S0_NC04 - NC */
13 GPIO_NC
, /* S0_NC05 - NC */
14 GPIO_FUNC2
, /* S0_NC06 - EDP_HPD_L */
15 GPIO_FUNC2
, /* S0_NC07 - DDI1_DDCDATA */
16 GPIO_FUNC2
, /* S0_NC08 - DDI1_DDCCLK */
17 GPIO_NC
, /* S0_NC09 - NC */
18 GPIO_FUNC2
, /* S0_NC10 - SOC_EDP_BLON_C */
19 GPIO_FUNC2
, /* S0_NC11 - SOC_DPST_PWM_C */
20 GPIO_NC
, /* S0_NC12 - NC */
21 GPIO_INPUT
, /* S0_NC13 - GPIO_NC13 - STRAP */
22 GPIO_NC
, /* S0_NC14 - NC */
23 GPIO_DEFAULT
, /* S0_NC15 - XDP_GPIO_S0_NC15 */
24 GPIO_DEFAULT
, /* S0_NC16 - XDP_GPIO_S0_NC16 */
25 GPIO_DEFAULT
, /* S0_NC17 - XDP_GPIO_S0_NC17 */
26 GPIO_DEFAULT
, /* S0_NC18 - XDP_GPIO_S0_NC18 */
27 GPIO_DEFAULT
, /* S0_NC19 - XDP_GPIO_S0_NC19 */
28 GPIO_DEFAULT
, /* S0_NC20 - XDP_GPIO_S0_NC20 */
29 GPIO_DEFAULT
, /* S0_NC21 - XDP_GPIO_S0_NC21 */
30 GPIO_DEFAULT
, /* S0_NC22 - XDP_GPIO_S0_NC22 */
31 GPIO_DEFAULT
, /* S0_NC23 - XDP_GPIO_S0_NC23 */
32 GPIO_NC
, /* S0_NC24 - NC */
33 GPIO_NC
, /* S0_NC25 - NC */
34 GPIO_NC
, /* S0_NC26 - NC */
39 static const struct soc_gpio_map gpscore_gpio_map
[] = {
40 GPIO_ACPI_SCI
, /* S0_SC000 - SOC_KBC_SCI - INT */
41 GPIO_NC
, /* S0_SC001 - NC */
42 GPIO_NC
, /* S0-SC002 - SATA_LED_R_N (NC/PU) */
43 GPIO_FUNC1
, /* S0-SC003 - PCIE_CLKREQ_IMAGE0# */
44 GPIO_NC
, /* S0-SC004 - NC# */
45 GPIO_FUNC1
, /* S0-SC005 - PCIE_CLKREQ_WLAN# */
46 GPIO_FUNC1
, /* S0-SC006 - PCIE_CLKREQ_LAN# */
47 GPIO_FUNC(2, PULL_DISABLE
, 10K
), /* S0-SC007 - SD3_WP external pull */
48 GPIO_NC
, /* S0-SC008 - ACZ_RST# (NC) */
49 GPIO_NC
, /* S0-SC009 - ACZ_SYNC (NC) */
50 GPIO_NC
, /* S0-SC010 - ACZ_BCLK (NC) */
51 GPIO_NC
, /* S0-SC011 - ACZ_STDOUT (NC) */
52 GPIO_NC
, /* S0-SC012 - PCH_AZ_CODEC_SDIN0 (NC) */
53 GPIO_NC
, /* S0-SC013 - NC */
54 GPIO_INPUT
, /* S0-SC014 - DET_TRIGGER - INT */
55 GPIO_INPUT
, /* S0-SC015 - AJACK_MICPRES_L - INT */
56 GPIO_FUNC(3, PULL_DOWN
, 20K
), /* S0-SC016 - MMC1_45_CLK */
57 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC017 - MMC1_45_D[0] */
58 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC018 - MMC1_45_D[1] */
59 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC019 - MMC1_45_D[2] */
60 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC020 - MMC1_45_D[3] */
61 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC021 - MMC1_45_D[4] */
62 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC022 - MMC1_45_D[5] */
63 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC023 - MMC1_45_D[6] */
64 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC024 - MMC1_45_D[7] */
65 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC025 - MMC1_45_CMD */
66 GPIO_FUNC(3, PULL_UP
, 20K
), /* S0-SC026 - MMC1_45_RST */
67 GPIO_NC
, /* S0-SC027 - NC */
68 GPIO_NC
, /* S0-SC028 - NC */
69 GPIO_NC
, /* S0-SC029 - NC */
70 GPIO_NC
, /* S0-SC030 - NC */
71 GPIO_NC
, /* S0-SC031 - NC */
72 GPIO_NC
, /* S0-SC032 - NC */
73 GPIO_FUNC(1, PULL_DOWN
, 20K
), /* S0-SC033 - SD3_CLK */
74 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC034 - SD3_D0 */
75 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC035 - SD3_D1 */
76 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC036 - SD3_D2 */
77 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC037 - SD3_D3 */
78 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC038 - SD3_CD# */
79 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC039 - SD3_CMD */
80 GPIO_NC
, /* S0-SC040 - SDMMC3_1P8_EN - TP3 */
81 GPIO_FUNC(1, PULL_UP
, 20K
), /* S0-SC041 - SDIO3_PWR_EN# */
82 GPIO_FUNC1
, /* S0-SC042 - LPC_LAD0 */
83 GPIO_FUNC1
, /* S0-SC043 - LPC-LAD1 */
84 GPIO_FUNC1
, /* S0-SC044 - LPC_LAD2 */
85 GPIO_FUNC1
, /* S0-SC045 - LPC_LAD3 */
86 GPIO_FUNC1
, /* S0-SC046 - LPC_LFRAME# */
87 GPIO_FUNC1
, /* S0-SC047 - PCLK_TPM */
88 GPIO_FUNC1
, /* S0-SC048 - CLK_PCI_EC */
89 GPIO_FUNC1
, /* S0-SC049 - LPC_CLKRUN_L */
90 GPIO_NC
, /* S0-SC050 - IRQ_SERIRQ */
91 GPIO_FUNC1
, /* S0-SC051 - SMB_SOC_DATA (XDP) */
92 GPIO_FUNC1
, /* S0-SC052 - SMB_SOC_CLK (XDP) */
93 GPIO_NC
, /* S0-SC053 - SMB_SOC_ALERTB (NC) */
94 GPIO_DEFAULT
, /* S0-SC054 - NC */
95 GPIO_NC
, /* S0-SC055 - NC */
96 GPIO_INPUT
, /* S0-SC056 - GPIO_S0_SC_56 - STRAP */
97 GPIO_FUNC1
, /* S0-SC057 - PCH_UART_TXD */
98 GPIO_INPUT
, /* S0-SC058 - SIM_DET_C */
99 GPIO_INPUT_LEGACY
, /* S0-SC059 - EC_IN_RW_C */
100 GPIO_NC
, /* S0-SC060 - NC */
101 GPIO_FUNC1
, /* S0-SC061 - SOC_UART_RX */
102 GPIO_FUNC1
, /* S0-SC062 - I2S_BCLK */
103 GPIO_FUNC1
, /* S0-SC063 - I2S_LRCLK */
104 GPIO_FUNC1
, /* S0-SC064 - I2S_DIN */
105 GPIO_FUNC1
, /* S0-SC065 - I2S_DOUT */
106 GPIO_FUNC1
, /* S0-SC066 - SIO_SPI_CS# */
107 GPIO_FUNC1
, /* S0-SC067 - SIO_SPI_MISO */
108 GPIO_FUNC1
, /* S0-SC068 - SIO_SPI_MOSI */
109 GPIO_FUNC1
, /* S0-SC069 - SIO_SPI_CLK */
110 GPIO_NC
, /* S0-SC070 - NC */
111 GPIO_NC
, /* S0-SC071 - NC */
112 GPIO_DIRQ
, /* S0-SC072 - TOUCH_INT_L_DX */
113 GPIO_NC
, /* S0-SC073 - NC */
114 GPIO_NC
, /* S0-SC074 - SIO_UART2_RXD (NC) */
115 GPIO_NC
, /* S0-SC075 - SIO_UART2_TXD (NC) */
116 GPIO_NC
, /* S0-SC076 - NC */
117 GPIO_NC
, /* S0-SC077 - NC */
118 GPIO_NC
, /* S0-SC078 - NC */
119 GPIO_NC
, /* S0-SC079 - NC */
120 GPIO_FUNC1
, /* S0-SC080 - I2C_1_SDA */
121 GPIO_FUNC1
, /* S0-SC081 - I2C_1_SCL */
122 GPIO_NC
, /* S0-SC082 - NC */
123 GPIO_NC
, /* S0-SC083 - NC */
124 GPIO_NC
, /* S0-SC084 - NC */
125 GPIO_NC
, /* S0-SC085 - NC */
126 GPIO_NC
, /* S0-SC086 - NC */
127 GPIO_NC
, /* S0-SC087 - NC */
128 GPIO_NC
, /* S0-SC088 - NC */
129 GPIO_NC
, /* S0-SC089 - NC */
130 GPIO_NC
, /* S0-SC090 - NC */
131 GPIO_NC
, /* S0-SC091 - NC */
132 GPIO_NC
, /* S0-SC092 - I2C_NGFF_SDA (NC/PU) */
133 GPIO_NC
, /* S0-SC093 - I2C_NGFF_SCL (NC/PU) */
134 GPIO_NC
, /* S0-SC094 - NC */
135 GPIO_NC
, /* S0-SC095 - SIO_PWM1 (NC) */
136 GPIO_FUNC1
, /* S0-SC096 - I2S_MCLK */
137 GPIO_NC
, /* S0-SC097 - NC */
138 GPIO_NC
, /* S0-SC098 - NC */
139 GPIO_NC
, /* S0-SC099 - NC */
140 GPIO_NC
, /* S0-SC100 - NC */
141 GPIO_DIRQ
, /* S0-SC101 - KBD_IRQ# */
146 static const struct soc_gpio_map gpssus_gpio_map
[] = {
147 GPIO_ACPI_WAKE
, /* S500 - PCH_WAKE# */
148 GPIO_NC
, /* S501 - NC */
149 GPIO_ACPI_WAKE
, /* S502 - TOUCH_INT# - INT */
150 GPIO_FUNC6
, /* S503 - LTE_WAKE_L# - INT */
151 GPIO_NC
, /* S504 - SOC_JTAG2_TDO (NC/PU) */
152 GPIO_FUNC1
, /* S505 - SUS_CLK_WLAN (NC) */
153 GPIO_INPUT_PU
, /* S506 - PCH_SPI_WP */
154 GPIO_ACPI_SMI
, /* S507 - SOC_KBC_SMI - INT */
155 GPIO_INPUT
, /* S508 - SOC_RECOVER- */
156 GPIO_DIRQ
, /* S509 - MUX_AUD_INT1# */
157 GPIO_OUT_HIGH
, /* S510 - WIFI_DISABLE_L */
158 GPIO_FUNC0
, /* S511 - SUSPWRDNACK */
159 GPIO_FUNC0
, /* S512 - WIFI_SUSCLK */
160 GPIO_FUNC0
, /* S513 - SLP_SX */
161 GPIO_NC
, /* S514 - NC */
162 GPIO_FUNC0
, /* S515 - WLAN_WAKE_L - INT */
163 GPIO_FUNC0
, /* S516 - PCH_PWRBTN_L */
164 GPIO_NC
, /* S517 - NC */
165 GPIO_FUNC0
, /* S518 - SUS_STAT# */
166 GPIO_FUNC0
, /* S519 - USB_OC0# */
167 GPIO_FUNC0
, /* S520 - USB_OC1# */
168 GPIO_NC
, /* S521 - NC */
169 GPIO_NC
, /* S522 - XDP_GPIO_DFX0 */
170 GPIO_NC
, /* S523 - XDP_GPIO_DFX1 */
171 GPIO_NC
, /* S524 - XDP_GPIO_DFX2 */
172 GPIO_NC
, /* S525 - XDP_GPIO_DFX3 */
173 GPIO_NC
, /* S526 - XDP_GPIO_DFX4 */
174 GPIO_NC
, /* S527 - XDP_GPIO_DFX5 */
175 GPIO_NC
, /* S528 - XDP_GPIO_DFX6 */
176 GPIO_NC
, /* S529 - XDP_GPIO_DFX7 */
177 GPIO_NC
, /* S530 - XDP_GPIO_DFX8 */
178 GPIO_NC
, /* S531 - NC */
179 GPIO_NC
, /* S532 - NC */
180 GPIO_NC
, /* S533 - NC */
181 GPIO_NC
, /* S534 - NC */
182 GPIO_OUT_HIGH
, /* S535 - LTE_DISABLE_L */
183 GPIO_NC
, /* S536 - NC */
184 GPIO_INPUT
, /* S537 - RAM_ID0 */
185 GPIO_INPUT
, /* S538 - RAM_ID1 */
186 GPIO_INPUT
, /* S539 - RAM_ID2 */
187 GPIO_NC
, /* S540 - NC */
188 GPIO_NC
, /* S541 - NC */
189 GPIO_NC
, /* S542 - NC */
190 GPIO_NC
, /* S543 - NC */
194 static const u8 core_dedicated_irq
[GPIO_MAX_DIRQS
] = {
195 [I8042_IRQ_OFFSET
] = I8042_IRQ_GPIO
,
198 static const u8 sus_dedicated_irq
[GPIO_MAX_DIRQS
] = {
199 [CODEC_IRQ_OFFSET
] = CODEC_IRQ_GPIO
,
202 static struct soc_gpio_config gpio_config
= {
203 .ncore
= gpncore_gpio_map
,
204 .score
= gpscore_gpio_map
,
205 .ssus
= gpssus_gpio_map
,
206 .core_dirq
= &core_dedicated_irq
,
207 .sus_dirq
= &sus_dedicated_irq
,
210 struct soc_gpio_config
* mainboard_get_gpios(void)