1 /* SPDX-License-Identifier: GPL-2.0-only */
6 * All definitions are taken from a comparison of the output of "inteltool -a"
7 * using the stock BIOS and with coreboot.
10 /* Early pad configuration in bootblock. */
11 const struct pad_config early_gpio_table
[] = {
13 PAD_CFG_NF(GPP_C20
, NONE
, DEEP
, NF1
),
15 PAD_CFG_NF(GPP_C21
, NONE
, DEEP
, NF1
),
18 const struct pad_config
*variant_early_gpio_table(size_t *num
)
20 *num
= ARRAY_SIZE(early_gpio_table
);
21 return early_gpio_table
;
24 /* Pad configuration in ramstage. */
25 const struct pad_config gpio_table
[] = {
26 /* GPD0: PM_BATLOW_N */
27 PAD_CFG_NF(GPD0
, UP_20K
, PWROK
, NF1
),
28 /* GPD1: AC_PRESENT */
29 PAD_CFG_NF(GPD1
, NATIVE
, PWROK
, NF1
),
30 /* GPD2: Not Connected */
32 /* GPD3: SOC_PWRBTN_N */
33 PAD_CFG_NF(GPD3
, UP_20K
, PWROK
, NF1
),
35 PAD_CFG_NF(GPD4
, NONE
, PWROK
, NF1
),
37 PAD_CFG_NF(GPD5
, NONE
, PWROK
, NF1
),
38 /* GPD6: Not Connected */
40 /* GPD7: Not Connected */
43 PAD_CFG_NF(GPD8
, NONE
, PWROK
, NF1
),
44 /* GPD9: Not Connected */
46 /* GPD10: Not Connected */
48 /* GPD11: Not Connected */
53 PAD_CFG_NF(GPP_A1
, NONE
, DEEP
, NF1
),
55 PAD_CFG_NF(GPP_A2
, NONE
, DEEP
, NF1
),
57 PAD_CFG_NF(GPP_A3
, NONE
, DEEP
, NF1
),
59 PAD_CFG_NF(GPP_A4
, NONE
, DEEP
, NF1
),
60 /* GPP_A5: LPC_FRAME_N */
61 PAD_CFG_NF(GPP_A5
, NONE
, DEEP
, NF1
),
62 /* GPP_A6: LPC_SERIRQ */
63 PAD_CFG_NF(GPP_A6
, NONE
, DEEP
, NF1
),
64 /* GPP_A7: Not Connected */
66 /* GPP_A8: PM_CLKRUN_N */
67 PAD_CFG_NF(GPP_A8
, NONE
, DEEP
, NF1
),
68 /* GPP_A9: LPC_CLK_EC */
69 PAD_CFG_NF(GPP_A9
, DN_20K
, DEEP
, NF1
),
70 /* GPP_A10: LPC_CLK_Debug */
71 PAD_NC(GPP_A10
, DN_20K
),
73 PAD_CFG_GPI(GPP_A11
, DN_20K
, DEEP
),
74 /* GPP_A12: Not Connected */
75 PAD_NC(GPP_A12
, NONE
),
76 /* GPP_A13: SUSPWRDNACK */
77 PAD_NC(GPP_A13
, DN_20K
),
78 /* GPP_A14: PM_SUS_STAT_N */
79 PAD_NC(GPP_A14
, DN_20K
),
80 /* GPP_A15: SUSACK# */
81 PAD_NC(GPP_A15
, DN_20K
),
82 /* GPP_A16: Not Connected */
83 PAD_NC(GPP_A16
, DN_20K
),
84 /* GPP_A17: Not Connected */
85 PAD_NC(GPP_A17
, DN_20K
),
86 /* GPP_A18: Not Connected */
87 PAD_NC(GPP_A18
, DN_20K
),
88 /* GPP_A19: Not Connected */
89 PAD_NC(GPP_A19
, DN_20K
),
90 /* GPP_A20: Not Connected */
91 PAD_NC(GPP_A20
, NONE
),
92 /* GPP_A21: Not Connected */
93 PAD_NC(GPP_A21
, DN_20K
),
94 /* GPP_A22: FP_SSP0_INT */
95 PAD_NC(GPP_A22
, DN_20K
),
96 /* GPP_A23: FP_SSP0_RST */
97 PAD_NC(GPP_A23
, DN_20K
),
98 /* GPP_B0: Not Connected */
99 PAD_NC(GPP_B0
, DN_20K
),
100 /* GPP_B1: Not Connected */
101 PAD_NC(GPP_B1
, DN_20K
),
102 /* GPP_B2: +V3P3A_PCH */
103 PAD_NC(GPP_B2
, DN_20K
),
104 /* GPP_B3: Not Connected */
105 PAD_NC(GPP_B3
, DN_20K
),
106 /* GPP_B4: BT_OFF_N_MCP */
107 PAD_CFG_TERM_GPO(GPP_B4
, 1, UP_20K
, DEEP
),
108 /* GPP_B5: SRCCLKREQ0# */
109 PAD_CFG_NF(GPP_B5
, NONE
, DEEP
, NF1
),
110 /* GPP_B6: CLKREQ1# */
111 PAD_CFG_GPI(GPP_B6
, DN_20K
, DEEP
),
112 /* GPP_B7: CLKREQ2# */
113 PAD_CFG_NF(GPP_B7
, DN_20K
, DEEP
, NF1
),
114 /* GPP_B8: CLKREQ3# */
115 PAD_CFG_NF(GPP_B8
, DN_20K
, DEEP
, NF1
),
116 /* GPP_B9: WLAN_CLKREQ# */
117 PAD_CFG_NF(GPP_B9
, NONE
, DEEP
, NF1
),
118 /* GPP_B10: CLKREQ5# */
119 PAD_CFG_NF(GPP_B10
, DN_20K
, DEEP
, NF1
),
120 /* GPP_B11: Not Connected */
121 PAD_NC(GPP_B11
, DN_20K
),
122 /* GPP_B12 SLP_S0_N */
123 PAD_NC(GPP_B12
, DN_20K
),
124 /* GPP_B13: SYS_RESET# */
125 PAD_CFG_NF(GPP_B13
, NONE
, DEEP
, NF1
),
126 /* GPP_B14: HDA_SPKR */
127 PAD_NC(GPP_B14
, DN_20K
),
128 /* GPP_B15: Not Connected */
129 PAD_NC(GPP_B15
, DN_20K
),
130 /* GPP_B16: Not Connected */
131 PAD_NC(GPP_B16
, DN_20K
),
132 /* GPP_B17: Not Connected */
133 PAD_NC(GPP_B17
, DN_20K
),
134 /* GPP_B18: +V3P3A_PCH */
135 PAD_NC(GPP_B18
, DN_20K
),
136 /* GPP_B19: FP_SSP0_CS */
137 PAD_NC(GPP_B19
, DN_20K
),
138 /* GPP_B20: FP_SSP0_CLK */
139 PAD_NC(GPP_B20
, DN_20K
),
140 /* GPP_21: FP_SSP0_MISO */
141 PAD_NC(GPP_B21
, DN_20K
),
142 /* GPP_22: FP_SSP0_MOSI */
143 PAD_NC(GPP_B22
, DN_20K
),
144 /* GPP_B23: SML1ALERT#/PCHHOT# */
145 PAD_NC(GPP_B23
, DN_20K
),
147 PAD_CFG_NF(GPP_C0
, UP_20K
, DEEP
, NF1
),
148 /* GPP_C1: SMBDATA */
149 PAD_CFG_NF(GPP_C1
, UP_20K
, DEEP
, NF1
),
150 /* GPP_C2: SMBALERT# */
151 PAD_NC(GPP_C2
, DN_20K
),
152 /* GPP_C3: SML0CLK */
153 PAD_NC(GPP_C3
, DN_20K
),
154 /* GPP_C4: SML0DATA */
155 PAD_NC(GPP_C4
, DN_20K
),
156 /* GPP_C5: SML0ALERT# */
157 PAD_NC(GPP_C5
, DN_20K
),
158 /* GPP_C6: SML1CLK */
159 PAD_NC(GPP_C6
, DN_20K
),
160 /* GPP_C7: SML1DATA */
161 PAD_NC(GPP_C7
, DN_20K
),
162 /* GPP_C8: UART0_RXD */
163 PAD_CFG_NF(GPP_C8
, UP_20K
, DEEP
, NF1
),
164 /* GPP_C9: UART0_TXD */
165 PAD_CFG_NF(GPP_C9
, UP_20K
, DEEP
, NF1
),
166 /* GPP_C10: UART0_RTS# */
167 PAD_CFG_NF(GPP_C10
, NONE
, DEEP
, NF1
),
168 /* GPP_C11: UART0_CTS# */
169 PAD_CFG_NF(GPP_C11
, UP_20K
, DEEP
, NF1
),
170 /* GPP_C12: Not Connected */
171 PAD_NC(GPP_C12
, UP_20K
),
172 /* GPP_C13: Not Connected */
173 PAD_NC(GPP_C13
, UP_20K
),
174 /* GPP_C14: Not Connected */
175 PAD_NC(GPP_C14
, UP_20K
),
176 /* GPP_C15: Not Connected */
177 PAD_NC(GPP_C15
, UP_20K
),
178 /* GPP_C16: DAT_I2C_TP */
179 PAD_CFG_NF(GPP_C16
, NONE
, DEEP
, NF1
),
180 /* GPP_C17: CLK_I2C_TP */
181 PAD_CFG_NF(GPP_C17
, NONE
, DEEP
, NF1
),
182 /* GPP_C18: TOUCH_I2C_SDA */
183 PAD_CFG_NF(GPP_C18
, NONE
, DEEP
, NF1
),
184 /* GPP_C19: TOUCH_I2C_CLK */
185 PAD_CFG_NF(GPP_C19
, NONE
, DEEP
, NF1
),
186 /* GPP_C22: Not Connected */
187 PAD_NC(GPP_C22
, NONE
),
188 /* GPP_C23: TOUCHPAD_INT */
189 PAD_CFG_GPI_APIC_LOW(GPP_C23
, NONE
, PLTRST
),
190 /* GPP_D0: Not Connected */
191 PAD_NC(GPP_D0
, DN_20K
),
192 /* GPP_D1: Not Connected */
193 PAD_NC(GPP_D1
, DN_20K
),
194 /* GPP_D2: Not Connected */
195 PAD_NC(GPP_D2
, DN_20K
),
196 /* GPP_D3: Not Connected */
197 PAD_NC(GPP_D3
, DN_20K
),
198 /* GPP_D4: Not Connected */
199 PAD_NC(GPP_D4
, DN_20K
),
200 /* GPP_D5: Not Connected */
201 PAD_NC(GPP_D5
, DN_20K
),
202 /* GPP_D6: Not Connected */
203 PAD_NC(GPP_D6
, DN_20K
),
204 /* GPP_D7: Not Connected */
205 PAD_NC(GPP_D7
, DN_20K
),
206 /* GPP_D8: Not Connected */
207 PAD_NC(GPP_D8
, DN_20K
),
208 /* GPP_D9: VOLUME_UP */
209 PAD_NC(GPP_D9
, DN_20K
),
210 /* GPP_D10: VOLUME_DOWN */
211 PAD_NC(GPP_D10
, DN_20K
),
212 /* GPP_D11: Not Connected */
213 PAD_NC(GPP_D11
, DN_20K
),
214 /* GPP_D12: Not Connected */
215 PAD_NC(GPP_D12
, DN_20K
),
216 /* GPP_D13: Not Connected */
217 PAD_NC(GPP_D13
, DN_20K
),
218 /* GPP_D14: GPP_D14 */
219 PAD_NC(GPP_D14
, DN_20K
),
220 /* GPP_D15: GPP_D15 */
221 PAD_NC(GPP_D15
, DN_20K
),
222 /* GPP_D16: GPP_D16 */
223 PAD_NC(GPP_D16
, DN_20K
),
224 /* GPP_D17: PCH_AUDIO_PWREN */
225 PAD_NC(GPP_D17
, DN_20K
),
226 /* GPP_D18: Not Connected */
227 PAD_NC(GPP_D18
, DN_20K
),
228 /* GPP_D19: Not Connected */
229 PAD_NC(GPP_D19
, DN_20K
),
230 /* GPP_D20: WIFI_OFF_N_MCP */
231 PAD_CFG_TERM_GPO(GPP_D20
, 1, UP_20K
, DEEP
),
232 /* GPP_D21: Not Connected */
233 PAD_NC(GPP_D21
, DN_20K
),
234 /* GPP_D22: Not Connected */
235 PAD_NC(GPP_D22
, DN_20K
),
236 /* GPP_D23: Not Connected */
237 PAD_NC(GPP_D23
, DN_20K
),
238 /* GPP_E0: Not Connected */
239 PAD_NC(GPP_E0
, DN_20K
),
240 /* GPP_E1: Not Connected */
241 PAD_NC(GPP_E1
, DN_20K
),
242 /* GPP_E2: SATA2_SSD_Type */
243 PAD_NC(GPP_E2
, DN_20K
),
244 /* GPP_E3: Not Connected */
245 PAD_NC(GPP_E3
, DN_20K
),
246 /* GPP_E4: Not Connected */
247 PAD_NC(GPP_E4
, DN_20K
),
248 /* GPP_E5: Not Connected */
249 PAD_NC(GPP_E5
, DN_20K
),
250 /* GPP_E6: SATA2_SSD_DEVSLP */
251 PAD_CFG_NF(GPP_E6
, NONE
, PWROK
, NF1
),
252 /* GPP_E7: TOUCH_PANEL_INT_N */
253 PAD_NC(GPP_E7
, DN_20K
),
254 /* GPP_E8: Not Connected */
255 PAD_NC(GPP_E8
, DN_20K
),
256 /* GPP_E9: USB2_P1_WP1_OC_N */
257 PAD_CFG_NF(GPP_E9
, NONE
, DEEP
, NF1
),
258 /* GPP_E10: USB2_P2_WP2_OC_N */
259 PAD_CFG_NF(GPP_E10
, NONE
, DEEP
, NF1
),
260 /* GPP_E11: USB2_P3_WP2_OC_N */
261 PAD_CFG_NF(GPP_E11
, NONE
, DEEP
, NF1
),
262 /* GPP_E12: Not Connected */
263 PAD_NC(GPP_E12
, DN_20K
),
264 /* GPP_E13: DDI1_HPD */
265 PAD_CFG_NF(GPP_E13
, NONE
, DEEP
, NF1
),
266 /* GPP_E14: DDI2_HPD */
267 PAD_CFG_NF(GPP_E14
, NONE
, DEEP
, NF1
),
269 PAD_CFG_GPI_SMI_LOW(GPP_E15
, NONE
, DEEP
, EDGE_SINGLE
),
271 PAD_CFG_GPI_SCI_LOW(GPP_E16
, NONE
, PLTRST
, LEVEL
),
272 /* GPP_E17: EDP_HPD */
273 PAD_CFG_NF(GPP_E17
, NONE
, DEEP
, NF1
),
274 /* GPP_E18: DDI1_DDC_SCL */
275 PAD_CFG_NF(GPP_E18
, NONE
, DEEP
, NF1
),
276 /* GPP_E19: DDI1_DDC_SDA */
277 PAD_CFG_NF(GPP_E19
, DN_20K
, DEEP
, NF1
),
278 /* GPP_E20: Not Connected */
279 PAD_NC(GPP_E20
, DN_20K
),
280 /* GPP_E21: DDI2_DDC_SDA */
281 PAD_NC(GPP_E21
, DN_20K
),
282 /* GPP_E22: Not Connected */
283 PAD_NC(GPP_E22
, DN_20K
),
284 /* GPP_E23: TOUCH_PANEL_RESET_N */
285 PAD_NC(GPP_E23
, DN_20K
),
286 /* GPP_F0: Not Connected */
287 PAD_NC(GPP_F0
, DN_20K
),
288 /* GPP_F1: Not Connected */
289 PAD_NC(GPP_F1
, DN_20K
),
290 /* GPP_F2: Not Connected */
291 PAD_NC(GPP_F2
, DN_20K
),
292 /* GPP_F3: Not Connected */
293 PAD_NC(GPP_F3
, DN_20K
),
294 /* GPP_F4: GSENSOR_I2C_SDA */
295 PAD_NC(GPP_F4
, DN_20K
),
296 /* GPP_F5: GSENSOR_I2C_SCL */
297 PAD_NC(GPP_F5
, DN_20K
),
298 /* GPP_F6: Not Connected */
299 PAD_NC(GPP_F6
, DN_20K
),
300 /* GPP_F7: Not Connected */
301 PAD_NC(GPP_F7
, DN_20K
),
302 /* GPP_F8: Not Connected */
303 PAD_NC(GPP_F8
, NONE
),
304 /* GPP_F9: Not Connected */
305 PAD_NC(GPP_F9
, NONE
),
306 /* GPP_F10: ACCEL2_INT */
307 PAD_NC(GPP_F10
, DN_20K
),
308 /* GPP_F11: ACCEL1_INT */
309 PAD_NC(GPP_F11
, DN_20K
),
310 /* GPP_F12: Not Connected */
311 PAD_NC(GPP_F12
, DN_20K
),
312 /* GPP_F13: Not Connected */
313 PAD_NC(GPP_F13
, DN_20K
),
314 /* GPP_F14: Not Connected */
315 PAD_NC(GPP_F14
, DN_20K
),
316 /* GPP_F15: Not Connected */
317 PAD_NC(GPP_F15
, DN_20K
),
318 /* GPP_F16: Not Connected */
319 PAD_NC(GPP_F16
, DN_20K
),
320 /* GPP_F17: Not Connected */
321 PAD_NC(GPP_F17
, DN_20K
),
322 /* GPP_F18: Not Connected */
323 PAD_NC(GPP_F18
, DN_20K
),
324 /* GPP_F19: Not Connected */
325 PAD_NC(GPP_F19
, DN_20K
),
326 /* GPP_F20: Not Connected */
327 PAD_NC(GPP_F20
, DN_20K
),
328 /* GPP_F21: Not Connected */
329 PAD_NC(GPP_F21
, DN_20K
),
330 /* GPP_F22: Not Connected */
331 PAD_NC(GPP_F22
, DN_20K
),
332 /* GPP_F23: Not Connected */
333 PAD_NC(GPP_F23
, DN_20K
),
334 /* GPP_G0: Not Connected */
335 PAD_NC(GPP_G0
, NONE
),
336 /* GPP_G1: Not Connected */
337 PAD_NC(GPP_G1
, NONE
),
338 /* GPP_G2: Not Connected */
339 PAD_NC(GPP_G2
, NONE
),
340 /* GPP_G3: Not Connected */
341 PAD_NC(GPP_G3
, NONE
),
342 /* GPP_G4: Not Connected */
343 PAD_NC(GPP_G4
, NONE
),
344 /* GPP_G5: Not Connected */
345 PAD_NC(GPP_G5
, NONE
),
346 /* GPP_G6: Not Connected */
347 PAD_NC(GPP_G6
, NONE
),
348 /* GPP_G7: Not Connected */
349 PAD_NC(GPP_G7
, NONE
),
352 const struct pad_config
*variant_gpio_table(size_t *num
)
354 *num
= ARRAY_SIZE(gpio_table
);