1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <baseboard/gpio.h>
4 #include <baseboard/variants.h>
6 #include <vendorcode/google/chromeos/chromeos.h>
8 /* Pad configuration in ramstage */
9 static const struct pad_config gpio_table
[] = {
11 PAD_CFG_GPI_SCI(GPP_A10
, NONE
, DEEP
, LEVEL
, INVERT
),
14 PAD_CFG_NF(GPP_A16
, NONE
, DEEP
, NF1
),
17 PAD_CFG_NF(GPP_A17
, NONE
, DEEP
, NF1
),
19 /* M.2_WWAN_DISABLE_N */
20 PAD_CFG_GPO(GPP_A19
, 1, PLTRST
),
23 PAD_CFG_NF(GPP_B0
, NONE
, DEEP
, NF1
),
26 PAD_CFG_NF(GPP_B1
, NONE
, DEEP
, NF1
),
29 PAD_CFG_NF(GPP_B12
, NONE
, DEEP
, NF1
),
32 PAD_CFG_NF(GPP_B13
, NONE
, DEEP
, NF1
),
35 PAD_CFG_GPO(GPP_B14
, 0, PLTRST
),
37 /* M.2_WLAN_PERST_N */
38 PAD_CFG_GPO(GPP_B17
, 1, PLTRST
),
41 PAD_CFG_NF(GPP_B19
, NONE
, DEEP
, NF1
),
44 PAD_CFG_NF(GPP_B20
, NONE
, DEEP
, NF1
),
47 PAD_CFG_NF(GPP_B21
, NONE
, DEEP
, NF1
),
50 PAD_CFG_NF(GPP_B22
, NONE
, DEEP
, NF1
),
53 PAD_CFG_NF(GPP_B23
, NONE
, DEEP
, NF1
),
56 PAD_CFG_GPO(GPP_C0
, 0, PLTRST
),
58 /* M2_WWAN_SSD_SKT2_CFG2 */
59 PAD_CFG_GPI(GPP_C3
, NONE
, PLTRST
),
62 PAD_CFG_GPO(GPP_C7
, 0, PLTRST
),
65 PAD_CFG_NF(GPP_C16
, UP_2K
, DEEP
, NF1
),
68 PAD_CFG_NF(GPP_C17
, UP_2K
, DEEP
, NF1
),
71 PAD_CFG_GPO(GPP_C19
, 0, PLTRST
),
74 PAD_CFG_GPO(GPP_D0
, 1, PLTRST
),
77 PAD_CFG_GPO(GPP_D1
, 1, PLTRST
),
80 PAD_CFG_GPO(GPP_D4
, 0, PLTRST
),
83 PAD_CFG_GPO(GPP_D5
, 0, PLTRST
),
86 PAD_CFG_GPO(GPP_D6
, 1, PLTRST
),
89 PAD_CFG_NF(GPP_D12
, NONE
, DEEP
, NF3
),
92 PAD_CFG_NF(GPP_D13
, NONE
, DEEP
, NF3
),
95 PAD_CFG_NF(GPP_D18
, NONE
, DEEP
, NF1
),
98 PAD_CFG_NF(GPP_D19
, NONE
, DEEP
, NF1
),
100 /* CNV_MFUART2_TXD */
101 PAD_CFG_NF(GPP_D20
, NONE
, DEEP
, NF1
),
103 /* CNV_PA_BLANKING */
104 PAD_CFG_NF(GPP_D21
, NONE
, DEEP
, NF1
),
107 PAD_CFG_NF(GPP_D22
, NONE
, PLTRST
, NF1
),
110 PAD_CFG_NF(GPP_D23
, NONE
, PLTRST
, NF1
),
113 PAD_CFG_NF(GPP_E0
, NONE
, DEEP
, NF2
),
116 PAD_CFG_NF(GPP_E2
, NONE
, PLTRST
, NF1
),
119 PAD_CFG_GPO(GPP_E3
, 1, PLTRST
),
122 PAD_CFG_NF(GPP_E13
, NONE
, DEEP
, NF1
),
125 PAD_CFG_NF(GPP_E14
, NONE
, DEEP
, NF1
),
128 PAD_CFG_NF(GPP_E15
, NONE
, DEEP
, NF1
),
131 PAD_CFG_NF(GPP_E16
, NONE
, DEEP
, NF1
),
134 PAD_CFG_NF(GPP_E17
, NONE
, DEEP
, NF1
),
137 PAD_CFG_NF(GPP_E18
, NONE
, DEEP
, NF1
),
140 PAD_CFG_NF(GPP_E20
, NONE
, DEEP
, NF1
),
143 PAD_CFG_NF(GPP_E21
, NONE
, DEEP
, NF1
),
146 PAD_CFG_NF(GPP_E22
, NONE
, DEEP
, NF1
),
149 PAD_CFG_NF(GPP_E23
, NONE
, DEEP
, NF1
),
152 PAD_CFG_NF(GPP_F4
, NONE
, DEEP
, NF1
),
155 PAD_CFG_NF(GPP_F7
, NONE
, DEEP
, NF1
),
158 PAD_CFG_NF(GPP_F8
, NONE
, DEEP
, NF1
),
161 PAD_CFG_NF(GPP_F9
, NONE
, DEEP
, NF1
),
164 PAD_CFG_NF(GPP_F10
, NONE
, DEEP
, NF1
),
167 PAD_CFG_NF(GPP_F11
, NONE
, DEEP
, NF1
),
170 PAD_CFG_NF(GPP_F12
, NONE
, DEEP
, NF1
),
173 PAD_CFG_NF(GPP_F13
, NONE
, DEEP
, NF1
),
176 PAD_CFG_NF(GPP_F14
, NONE
, DEEP
, NF1
),
179 PAD_CFG_NF(GPP_F15
, NONE
, DEEP
, NF1
),
182 PAD_CFG_NF(GPP_F16
, NONE
, DEEP
, NF1
),
185 PAD_CFG_NF(GPP_F17
, NONE
, DEEP
, NF1
),
188 PAD_CFG_NF(GPP_F18
, NONE
, DEEP
, NF1
),
191 PAD_CFG_NF(GPP_G0
, NONE
, DEEP
, NF1
),
194 PAD_CFG_NF(GPP_G1
, NONE
, DEEP
, NF1
),
197 PAD_CFG_NF(GPP_G2
, NONE
, DEEP
, NF1
),
200 PAD_CFG_NF(GPP_G3
, NONE
, DEEP
, NF1
),
203 PAD_CFG_NF(GPP_G4
, NONE
, DEEP
, NF1
),
206 PAD_CFG_NF(GPP_G5
, UP_20K
, PWROK
, NF1
),
209 PAD_CFG_NF(GPP_G6
, NONE
, DEEP
, NF1
),
212 PAD_CFG_NF(GPP_G7
, DN_20K
, PWROK
, NF1
),
215 PAD_CFG_GPI_APIC(GPP_H0
, NONE
, PLTRST
, LEVEL
, INVERT
),
217 /* SD_SDIO_PWR_EN_N */
218 PAD_CFG_NF(GPP_H1
, NONE
, DEEP
, NF1
),
221 PAD_CFG_NF(GPP_H2
, NONE
, DEEP
, NF3
),
224 PAD_CFG_GPO(GPP_H7
, 1, PLTRST
),
227 PAD_CFG_NF(GPP_H10
, NONE
, DEEP
, NF1
),
229 /* M.2_BT_I2S2_SCLK */
230 PAD_CFG_GPI(GPP_H11
, NONE
, PLTRST
),
233 PAD_CFG_NF(GPP_H12
, NONE
, DEEP
, NF2
),
236 PAD_CFG_GPI_APIC(GPP_H13
, NONE
, DEEP
, EDGE_SINGLE
, INVERT
),
238 /* M.2_BT_I2S2_RXD */
239 PAD_CFG_GPI(GPP_H14
, NONE
, PLTRST
),
242 PAD_CFG_NF(GPP_H15
, NONE
, DEEP
, NF1
),
244 /* Audio Jack Detection */
245 PAD_CFG_GPI_INT(GPP_H16
, NONE
, PLTRST
, EDGE_BOTH
),
248 PAD_CFG_GPO(GPP_H19
, 0, PLTRST
),
251 PAD_CFG_NF(GPP_R0
, NONE
, DEEP
, NF2
),
254 PAD_CFG_NF(GPP_R1
, NONE
, DEEP
, NF2
),
257 PAD_CFG_NF(GPP_R2
, NONE
, DEEP
, NF2
),
260 PAD_CFG_NF(GPP_R3
, NONE
, DEEP
, NF2
),
263 PAD_CFG_NF(GPP_R5
, NONE
, DEEP
, NF2
),
266 PAD_CFG_NF(GPP_R6
, NONE
, DEEP
, NF1
),
269 PAD_CFG_NF(GPP_R7
, NONE
, DEEP
, NF1
),
272 PAD_CFG_GPO(GPP_S0
, 1, DEEP
),
275 PAD_CFG_NF(GPP_S2
, UP_20K
, DEEP
, NF2
),
278 PAD_CFG_NF(GPP_S3
, UP_20K
, DEEP
, NF2
),
281 PAD_CFG_NF(GPP_S6
, UP_20K
, DEEP
, NF2
),
284 PAD_CFG_NF(GPP_S7
, UP_20K
, DEEP
, NF2
),
287 PAD_CFG_NF(GPD0
, NONE
, DEEP
, NF1
),
290 PAD_CFG_NF(GPD1
, NONE
, DEEP
, NF1
),
293 PAD_CFG_NF(GPD2
, NONE
, DEEP
, NF1
),
296 PAD_CFG_NF(GPD3
, UP_20K
, DEEP
, NF1
),
299 PAD_CFG_NF(GPD4
, NONE
, DEEP
, NF1
),
302 PAD_CFG_NF(GPD5
, NONE
, DEEP
, NF1
),
305 PAD_CFG_NF(GPD8
, NONE
, DEEP
, NF1
),
307 /* virtual GPIO for SD card detect */
308 PAD_CFG_GPI_GPIO_DRIVER(VGPIO_39
, NONE
, DEEP
),
311 /* Early pad configuration in bootblock */
312 static const struct pad_config early_gpio_table
[] = {
313 #if CONFIG(BOARD_INTEL_JASPERLAKE_RVP_EXT_EC)
315 PAD_CFG_NF(GPP_C20
, NONE
, DEEP
, NF1
),
318 PAD_CFG_NF(GPP_C21
, NONE
, DEEP
, NF1
),
322 PAD_CFG_NF(GPP_B19
, NONE
, DEEP
, NF1
),
325 PAD_CFG_NF(GPP_B20
, NONE
, DEEP
, NF1
),
328 PAD_CFG_NF(GPP_B21
, NONE
, DEEP
, NF1
),
331 PAD_CFG_NF(GPP_B22
, NONE
, DEEP
, NF1
),
334 PAD_CFG_GPI_APIC(GPP_H13
, NONE
, DEEP
, EDGE_SINGLE
, INVERT
),
337 const struct pad_config
*variant_gpio_table(size_t *num
)
339 *num
= ARRAY_SIZE(gpio_table
);
343 const struct pad_config
*variant_early_gpio_table(size_t *num
)
345 *num
= ARRAY_SIZE(early_gpio_table
);
346 return early_gpio_table
;
349 static const struct cros_gpio cros_gpios
[] = {
350 CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL
, CROS_GPIO_COMM0_NAME
),
353 DECLARE_CROS_GPIOS(cros_gpios
);