1 /* SPDX-License-Identifier: GPL-2.0-only */
5 /* Early pad configuration in bootblock */
6 const struct pad_config early_gpio_table
[] = {
7 /* H10: UART0 RXD Debug Connector */
8 PAD_CFG_NF(GPP_H10
, NONE
, DEEP
, NF2
),
9 /* H11: UART0 TXD Debug Connector */
10 PAD_CFG_NF(GPP_H11
, NONE
, DEEP
, NF2
),
13 const struct pad_config
*variant_early_gpio_table(size_t *num
)
15 *num
= ARRAY_SIZE(early_gpio_table
);
16 return early_gpio_table
;
19 /* Pad configuration in ramstage. */
20 const struct pad_config gpio_table
[] = {
21 /* GPD0: Battery Low */
22 PAD_CFG_NF(GPD0
, NONE
, DEEP
, NF1
),
23 /* GPD1: Charger Connected */
24 PAD_CFG_NF(GPD1
, NONE
, DEEP
, NF1
),
27 /* GPD3: Power Button */
28 PAD_CFG_NF(GPD3
, UP_20K
, DEEP
, NF1
),
35 /* GPD7: Power Adapter Disable */
36 PAD_CFG_GPO(GPD7
, 0, PWROK
),
37 /* GPD8: Suspend Clock */
38 PAD_CFG_NF(GPD8
, NONE
, DEEP
, NF1
),
39 /* GPD9: Wireless LAN Sleep */
40 PAD_CFG_NF(GPD9
, NONE
, DEEP
, NF1
),
43 /* GPD11: LAN PHY Enable */
51 /* A5: Not Connected */
53 /* A6: Not Connected */
55 /* A7: Embedded Controller SCI */
57 /* A8: Not Connected */
61 /* A11: Not Connected */
62 PAD_NC(GPP_A11
, NONE
),
63 /* A12: PCH M.2 SSD PEDET */
64 PAD_NC(GPP_A12
, NONE
),
65 /* A13: BlueTooth RF Kill */
66 PAD_CFG_GPO_GPIO_DRIVER(GPP_A13
, 1, DEEP
, NONE
),
67 /* A14: Test Point 45 */
68 PAD_NC(GPP_A14
, NONE
),
69 /* A15: Test Point 52 */
70 PAD_NC(GPP_A15
, NONE
),
71 /* A16: USB OverCurrent 3 */
72 PAD_CFG_NF(GPP_A16
, NONE
, DEEP
, NF1
),
73 /* A17: Not Connected */
74 PAD_NC(GPP_A17
, NONE
),
75 /* A18: DDI B DP HPD */
76 PAD_CFG_NF(GPP_A18
, NONE
, DEEP
, NF1
),
77 /* A19: Not Connected */
78 PAD_NC(GPP_A19
, NONE
),
79 /* A20: Test Point 44 */
80 PAD_NC(GPP_A20
, NONE
),
81 /* A21: Fingerprint Reader Interrupt */
82 PAD_NC(GPP_A21
, NONE
),
83 /* A22: Fingerprint Reader Reset */
84 PAD_NC(GPP_A22
, NONE
),
85 /* A23: Not Connected */
86 PAD_NC(GPP_A23
, NONE
),
88 /* B0: Core Vendor ID 0 */
89 PAD_CFG_NF(GPP_B0
, NONE
, DEEP
, NF1
),
90 /* B1: Core Vendor ID 1 */
91 PAD_CFG_NF(GPP_B1
, NONE
, DEEP
, NF1
),
93 PAD_CFG_GPI_SCI(GPP_B2
, NONE
, PLTRST
, EDGE_SINGLE
, INVERT
),
94 /* B3: Not Connected */
96 /* B4: Not Connected */
98 /* B5: I2C 2 SDA Touch Panel SDA */
100 /* B6: I2C 2 SCL Touch Panel Clock */
101 PAD_NC(GPP_B6
, NONE
),
102 /* B7: I2C 3 SDA Test Point 15 */
103 PAD_NC(GPP_B7
, NONE
),
104 /* B8: I2C 3 SCL Test Point 16 */
105 PAD_NC(GPP_B8
, NONE
),
106 /* B9: Not Connected */
107 PAD_NC(GPP_B9
, NONE
),
108 /* B10: Not Connected */
109 PAD_NC(GPP_B10
, NONE
),
110 /* B11: I2C PMC PD Interrupt */
111 PAD_CFG_NF(GPP_B11
, NONE
, DEEP
, NF1
),
113 PAD_NC(GPP_B12
, NONE
),
115 PAD_CFG_NF(GPP_B13
, NONE
, DEEP
, NF1
),
116 /* B14: Top Swap Override Weak Internal PD 20K
119 PAD_NC(GPP_B14
, NONE
),
120 /* B15: Not Connected */
121 PAD_NC(GPP_B15
, NONE
),
122 /* B16: Not Connected */
123 PAD_NC(GPP_B16
, NONE
),
124 /* B17: Not Connected */
125 PAD_NC(GPP_B17
, NONE
),
126 /* B18: Reboot Support Weak Internal PD 20K
129 PAD_NC(GPP_B18
, NONE
),
130 /* B19: Not Connected */
131 PAD_NC(GPP_B19
, NONE
),
132 /* B20: Not Connected */
133 PAD_NC(GPP_B20
, NONE
),
134 /* B21: Not Connected */
135 PAD_NC(GPP_B21
, NONE
),
136 /* B22: Not Connected */
137 PAD_NC(GPP_B22
, NONE
),
138 /* B23: Not used MiPi Camera */
139 PAD_NC(GPP_B23
, NONE
),
140 /* B24: Not Connected */
141 PAD_NC(GPP_B24
, NONE
),
142 /* B25: Not Connected */
143 PAD_NC(GPP_B25
, NONE
),
146 PAD_CFG_NF(GPP_C0
, NONE
, DEEP
, NF1
),
148 PAD_CFG_NF(GPP_C1
, NONE
, DEEP
, NF1
),
149 /* C2: TLS Confidentiality Weak Internal PD 20K
152 PAD_CFG_GPO(GPP_C2
, 1, PLTRST
),
153 /* C3: SML 0 Clock */
154 PAD_CFG_NF(GPP_C3
, NONE
, DEEP
, NF1
),
156 PAD_CFG_NF(GPP_C4
, NONE
, DEEP
, NF1
),
157 /* C5: Boot Strap Weak Internal PD 20K
160 PAD_CFG_GPO(GPP_C5
, 0, DEEP
),
161 /* C6: SML 1 Clock */
162 PAD_CFG_NF(GPP_C6
, NONE
, DEEP
, NF1
),
164 PAD_CFG_NF(GPP_C7
, NONE
, DEEP
, NF1
),
165 /* C8: Not Connected */
166 PAD_NC(GPP_C8
, NONE
),
167 /* C9: Not Connected */
168 PAD_NC(GPP_C9
, NONE
),
169 /* C10: Not Connected */
170 PAD_NC(GPP_C10
, NONE
),
171 /* C11: Not Connected */
172 PAD_NC(GPP_C11
, NONE
),
173 /* C12: Not Connected */
174 PAD_NC(GPP_C12
, NONE
),
175 /* C13: Not Connected */
176 PAD_NC(GPP_C13
, NONE
),
177 /* C14: Not Connected */
178 PAD_NC(GPP_C14
, NONE
),
179 /* C15: Not Connected */
180 PAD_NC(GPP_C15
, NONE
),
181 /* C16: Not Connected */
182 PAD_NC(GPP_C16
, NONE
),
183 /* C17: Not Connected */
184 PAD_NC(GPP_C17
, NONE
),
185 /* C18: Not Connected */
186 PAD_NC(GPP_C18
, NONE
),
187 /* C19: Not Connected */
188 PAD_NC(GPP_C19
, NONE
),
189 /* C20: Not Connected */
190 PAD_NC(GPP_C20
, NONE
),
191 /* C21: Not Connected */
192 PAD_NC(GPP_C21
, NONE
),
193 /* C22: Not Connected */
194 PAD_NC(GPP_C22
, NONE
),
195 /* C23: Not Connected */
196 PAD_NC(GPP_C23
, NONE
),
198 /* D0: Not used Audio ID 0 */
199 PAD_NC(GPP_D0
, NONE
),
200 /* D1: Not used Audio ID 1 */
201 PAD_NC(GPP_D1
, NONE
),
202 /* D2: Not used Audio ID 2 */
203 PAD_NC(GPP_D2
, NONE
),
204 /* D3: Not Connected */
205 PAD_NC(GPP_D3
, NONE
),
206 /* D4: Not Connected */
207 PAD_NC(GPP_D4
, NONE
),
208 /* D5: Clock Request 0 */
209 PAD_NC(GPP_D5
, NONE
),
210 /* D6: Clock Request 1 PCH M.2 SSD */
211 PAD_NC(GPP_D6
, NONE
),
212 /* D7: Clock Request 2 Wireless LAN */
213 PAD_CFG_NF(GPP_D7
, NONE
, DEEP
, NF1
),
214 /* D8: Clock Request 3 LAN */
215 PAD_NC(GPP_D8
, NONE
),
217 PAD_NC(GPP_D9
, NONE
),
218 /* D10: GSPI 2 Clock */
219 PAD_NC(GPP_D10
, NONE
),
220 /* D11: GSPI 2 MISO FPS */
221 PAD_NC(GPP_D11
, NONE
),
222 /* D12: GSPI 2 MOSI FPS */
223 PAD_NC(GPP_D12
, NONE
),
224 /* D13: Wireless LAN Wake */
225 PAD_NC(GPP_D13
, NONE
),
226 /* D14: CPU M.2 SSD Power Enable */
227 PAD_CFG_GPO_GPIO_DRIVER(GPP_D14
, 1, DEEP
, NONE
),
228 /* D15: Not Connected */
229 PAD_NC(GPP_D15
, NONE
),
230 /* D16: PCH M.2 SSD Power Enable */
231 PAD_NC(GPP_D16
, NONE
),
232 /* D17: Not used Fingerprint ID */
233 PAD_NC(GPP_D17
, NONE
),
234 /* D18: Not Connected */
235 PAD_NC(GPP_D18
, NONE
),
236 /* D19: Test Point 21 */
237 PAD_NC(GPP_D19
, NONE
),
239 /* E0: SATA x PCIe */
240 PAD_NC(GPP_E0
, NONE
),
241 /* E1: Not used Accelerometer Interrupt */
242 PAD_NC(GPP_E1
, NONE
),
243 /* E2: Not Connected */
244 PAD_NC(GPP_E2
, NONE
),
245 /* E3: WiFi RF Kill */
246 PAD_CFG_GPO_GPIO_DRIVER(GPP_E3
, 1, DEEP
, NONE
),
247 /* E4: Retimer Force Power */
248 PAD_CFG_GPO_GPIO_DRIVER(GPP_E4
, 0, DEEP
, NONE
),
249 /* E5: Not Connected */
250 PAD_NC(GPP_E5
, NONE
),
251 /* E6: JTAG ODT No internal PD
254 PAD_CFG_GPO(GPP_E6
, 0, DEEP
),
255 /* E7: Embedded Controller SMI */
256 PAD_NC(GPP_E7
, NONE
),
258 PAD_CFG_NF(GPP_E8
, NONE
, DEEP
, NF1
),
259 /* E9: USB OverCurrent 0 */
260 PAD_CFG_NF(GPP_E9
, NONE
, DEEP
, NF1
),
261 /* E10: PWD Amplifier Input */
262 PAD_NC(GPP_E10
, NONE
),
264 PAD_CFG_GPI_APIC_LOW(GPP_E11
, NONE
, PLTRST
),
265 /* E12: Touchpad Interrupt */
266 PAD_CFG_GPI_APIC_LOW(GPP_E12
, NONE
, PLTRST
),
267 /* E13: Not connected */
268 PAD_NC(GPP_E13
, NONE
),
270 PAD_CFG_NF(GPP_E14
, NONE
, DEEP
, NF1
),
271 /* E15: Not Connected */
272 PAD_NC(GPP_E15
, NONE
),
273 /* E16: Not Connected */
274 PAD_NC(GPP_E16
, NONE
),
275 /* E17: Not Connected */
276 PAD_NC(GPP_E17
, NONE
),
277 /* E18: Thunderbolt LSX TXD */
278 PAD_NC(GPP_E18
, NONE
),
279 /* E19: Thunderbolt LSX RXD */
280 PAD_NC(GPP_E19
, NONE
),
281 /* E20: Not Connected */
282 PAD_NC(GPP_E20
, NONE
),
283 /* E21: Not Connected */
284 PAD_NC(GPP_E21
, NONE
),
285 /* E22: Not Connected */
286 PAD_NC(GPP_E22
, NONE
),
287 /* E23: Not Connected */
288 PAD_NC(GPP_E23
, NONE
),
290 /* F0: CNV BRI Data */
291 PAD_NC(GPP_F0
, NONE
),
292 /* F1: CNV BRI Response */
293 PAD_NC(GPP_F1
, NONE
),
294 /* F2: CNV RGI Data */
295 PAD_NC(GPP_F2
, NONE
),
296 /* F3: CNV RGI Response */
297 PAD_NC(GPP_F3
, NONE
),
298 /* F4: CNV RF Reset */
299 PAD_NC(GPP_F4
, NONE
),
300 /* F5: Not used MODEM_CLKREQ */
301 PAD_NC(GPP_F5
, NONE
),
302 /* F6: CNV PA Blanking */
303 PAD_NC(GPP_F6
, NONE
),
304 /* F7: TBT LSX VCCIO Weak Internal PD 20K
307 PAD_CFG_GPO(GPP_F7
, 0, DEEP
),
308 /* F8: Not Connected */
309 PAD_NC(GPP_F8
, NONE
),
310 /* F9: EC Sleep S0 */
311 PAD_NC(GPP_F9
, NONE
),
312 /* F10: Weak Internal PD 20K */
313 PAD_CFG_GPO(GPP_F10
, 0, PLTRST
),
315 PAD_NC(GPP_F11
, NONE
),
316 /* F12: Not Connected */
317 PAD_NC(GPP_F12
, NONE
),
318 /* F13: Not Connected */
319 PAD_NC(GPP_F13
, NONE
),
320 /* F14: Not Connected */
321 PAD_NC(GPP_F14
, NONE
),
322 /* F15: Not used Accelerometer Interrupt 2*/
323 PAD_NC(GPP_F15
, NONE
),
324 /* F16: Not Connected */
325 PAD_NC(GPP_F16
, NONE
),
326 /* F17: Not used Touch Panel Reset */
327 PAD_NC(GPP_F17
, NONE
),
328 /* F18: Not used Touch Panel Interrupt */
329 PAD_NC(GPP_F18
, NONE
),
330 /* F19: Not Connected */
331 PAD_NC(GPP_F19
, NONE
),
332 /* F20: CPU M.2 SSD Reset */
333 PAD_CFG_GPO_GPIO_DRIVER(GPP_F20
, 1, PLTRST
, NONE
),
335 PAD_NC(GPP_F21
, NONE
),
336 /* F22: Not Connected */
337 PAD_NC(GPP_F22
, NONE
),
338 /* F23: Not Connected */
339 PAD_NC(GPP_F23
, NONE
),
341 /* H0: PCH M.2 SSD Reset */
342 PAD_NC(GPP_H0
, NONE
),
343 /* H1: BFX Strap 2 Bit 3 Weak Internal PD 20K */
344 PAD_CFG_GPO(GPP_H1
, 0, DEEP
),
345 /* H2: Wireless LAN Reset */
346 PAD_CFG_GPO(GPP_H2
, 1, PLTRST
),
347 /* H3: Not Connected */
348 PAD_NC(GPP_H3
, NONE
),
349 /* H4: I2C 0 SDA Touchpad */
350 PAD_CFG_NF(GPP_H4
, NONE
, DEEP
, NF1
),
351 /* H5: I2C 0 SDL Touchpad */
352 PAD_CFG_NF(GPP_H5
, NONE
, DEEP
, NF1
),
353 /* H6: Not Connected */
354 PAD_NC(GPP_H6
, NONE
),
355 /* H7: Not Connected */
356 PAD_NC(GPP_H7
, NONE
),
357 /* H8: I2C 4 SDA GSensor */
358 PAD_NC(GPP_H8
, NONE
),
359 /* H9: I2C 4 SDL GSensor */
360 PAD_NC(GPP_H9
, NONE
),
361 /* H12: Not Connected */
362 PAD_NC(GPP_H12
, NONE
),
363 /* H13: PCH M.2 SSD Device Sleep */
364 PAD_NC(GPP_H13
, NONE
),
365 /* H14: Not Connected */
366 PAD_NC(GPP_H14
, NONE
),
367 /* H15: DDPB Control Clock */
368 PAD_CFG_NF(GPP_H15
, NONE
, DEEP
, NF1
),
369 /* H16: Not Connected */
370 PAD_NC(GPP_H16
, NONE
),
371 /* H17: DDPB Control Data */
372 PAD_CFG_NF(GPP_H17
, NONE
, DEEP
, NF1
),
373 /* H18: CPI C10 Gate */
374 PAD_CFG_NF(GPP_H18
, NONE
, DEEP
, NF1
),
375 /* H19: Clock Request 4 CPU M.2 SSD */
376 PAD_CFG_NF(GPP_H19
, NONE
, DEEP
, NF1
),
377 /* H20: Not Connected */
378 PAD_NC(GPP_H20
, NONE
),
379 /* H21: Not Connected */
380 PAD_NC(GPP_H21
, NONE
),
381 /* H22: Not Connected */
382 PAD_NC(GPP_H22
, NONE
),
383 /* H23: Clock Request 5 */
384 PAD_NC(GPP_H23
, NONE
),
386 /* S0: Not Connected */
387 PAD_NC(GPP_S0
, NONE
),
388 /* S1: Not Connected */
389 PAD_NC(GPP_S1
, NONE
),
391 PAD_NC(GPP_S2
, NONE
),
393 PAD_NC(GPP_S3
, NONE
),
394 /* S4: Not Connected */
395 PAD_NC(GPP_S4
, NONE
),
396 /* S5: Not Connected */
397 PAD_NC(GPP_S5
, NONE
),
398 /* S6: Not Connected */
399 PAD_NC(GPP_S6
, NONE
),
400 /* S7: Not Connected */
401 PAD_NC(GPP_S7
, NONE
),
403 /* T0: Not Connected */
404 PAD_NC(GPP_T0
, NONE
),
405 /* T1: Not Connected */
406 PAD_NC(GPP_T1
, NONE
),
407 /* T2: Not Connected */
408 PAD_NC(GPP_T2
, NONE
),
409 /* T3: Not Connected */
410 PAD_NC(GPP_T3
, NONE
),
411 /* T4: Not Connected */
412 PAD_NC(GPP_T4
, NONE
),
413 /* T5: Not Connected */
414 PAD_NC(GPP_T5
, NONE
),
415 /* T6: Not Connected */
416 PAD_NC(GPP_T6
, NONE
),
417 /* T7: Not Connected */
418 PAD_NC(GPP_T7
, NONE
),
419 /* T8: Not Connected */
420 PAD_NC(GPP_T8
, NONE
),
421 /* T9: Not Connected */
422 PAD_NC(GPP_T9
, NONE
),
423 /* T10: Not Connected */
424 PAD_NC(GPP_T10
, NONE
),
425 /* T11: Not Connected */
426 PAD_NC(GPP_T11
, NONE
),
427 /* T12: Not Connected */
428 PAD_NC(GPP_T12
, NONE
),
429 /* T13: Not Connected */
430 PAD_NC(GPP_T13
, NONE
),
431 /* T14: Not Connected */
432 PAD_NC(GPP_T14
, NONE
),
433 /* T15: Not Connected */
434 PAD_NC(GPP_T15
, NONE
),
437 PAD_CFG_NF(GPP_R0
, NATIVE
, DEEP
, NF1
),
439 PAD_CFG_NF(GPP_R1
, NATIVE
, DEEP
, NF1
),
441 PAD_CFG_NF(GPP_R2
, NATIVE
, DEEP
, NF1
),
443 PAD_CFG_NF(GPP_R3
, NATIVE
, DEEP
, NF1
),
445 PAD_CFG_NF(GPP_R4
, NATIVE
, DEEP
, NF1
),
446 /* R5: MiPi Cam Reset */
447 PAD_NC(GPP_R5
, NONE
),
448 /* R6: Not Connected */
449 PAD_NC(GPP_R6
, NONE
),
450 /* R7: Not Connected */
451 PAD_NC(GPP_R7
, NONE
),
454 const struct pad_config
*variant_gpio_table(size_t *num
)
456 *num
= ARRAY_SIZE(gpio_table
);