coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include <baseboard/variants.h>
4 #include <baseboard/gpio.h>
5 #include <soc/gpio.h>
6 #include <variant/gpio.h>
7 #include <vendorcode/google/chromeos/chromeos.h>
8 
9 static const struct pad_config gpio_table[] = {
10  /* A0 thru A6 are ESPI, configured elsewhere */
11  /* A0 : ESPI_IO0 ==> ESPI_IO_0 */
12  /* A1 : ESPI_IO1 ==> ESPI_IO_1 */
13  /* A2 : ESPI_IO2 ==> ESPI_IO_2 */
14  /* A3 : ESPI_IO3 ==> ESPI_IO_3 */
15  /* A4 : ESPI_CS# ==> ESPI_CS_L */
16  /* A5 : ESPI_CLK ==> ESPI_CLK */
17  /* A6 : ESPI_RESET# ==> NC(TP764) */
18  /* A7 : GPP_A7 ==> CNVI_EN# */
19  PAD_CFG_GPI(GPP_A7, NONE, DEEP),
20  /* A8 : GPP_A8 ==> CNV_RF_RESET# */
21  PAD_CFG_NF(GPP_A8, NONE, DEEP, NF2),
22  /* A9 : GPP_A9 ==> CLKREQ_CNV#_1P8 */
23  PAD_CFG_NF(GPP_A9, NONE, DEEP, NF2),
24  /* A10 : GPP_A10 ==> TOUCH_SCREEN_RST# */
25  PAD_CFG_GPO(GPP_A10, 0, DEEP),
26  /* A11 : GPP_A11 ==> NC */
28  /* A12 : GPP_A12 ==> M2280_PCIE_SATA# */
29  PAD_CFG_NF(GPP_A12, NONE, DEEP, NF1),
30  /* A13 : GPP_A13 ==> PCH_BT_RADIO_DIS# */
31  PAD_CFG_GPO(GPP_A13, 1, DEEP),
32  /* A14 : GPP_A14 ==> USB_OC1# */
33  PAD_CFG_NF(GPP_A14, NONE, DEEP, NF1),
34  /* A15 : GPP_A15 ==> USB_OC2# */
35  PAD_CFG_NF(GPP_A15, NONE, DEEP, NF1),
36  /* A16 : GPP_A16 ==> USB_OC3# */
37  PAD_CFG_NF(GPP_A16, NONE, DEEP, NF1),
38  /* A17 : GPP_A17 ==> NC */
40  /* A18 : GPP_A18 ==> HDMI_HPD */
41  PAD_CFG_NF(GPP_A18, NONE, DEEP, NF1),
42  /* A19 : GPP_A19 ==> NC */
44  /* A20 : GPP_A20 ==> NC */
46  /* A21 : GPP_A21 ==> 3.3V_CAM_EN# */
47  PAD_CFG_GPO(GPP_A21, 0, PLTRST),
48  /* A22 : GPP_A22 ==> KB_DET# */
49  PAD_CFG_GPI(GPP_A22, NONE, PLTRST),
50  /* A23 : GPP_A23 ==> RECOVERY# */
51  PAD_CFG_GPI(GPP_A23, NONE, DEEP),
52 
53  /* B0 : GPP_B0 ==> CORE_VID0 */
54  PAD_CFG_NF(GPP_B0, NONE, DEEP, NF1),
55  /* B1 : GPP_B1 ==> CORE_VID1 */
56  PAD_CFG_NF(GPP_B1, NONE, DEEP, NF1),
57  /* B2 : GPP_B2 ==> VRALERT_L */
58  PAD_CFG_NF(GPP_B2, NONE, DEEP, NF1),
59  /* B3 : GPP_B3 ==> TOUCH_SCREEN_PD# */
60  PAD_CFG_GPO(GPP_B3, 0, PLTRST),
61  /* B4 : GPP_B4 ==> TOUCH_SCREEN_DET# */
62  PAD_CFG_GPI(GPP_B4, NONE, DEEP),
63  /* B5 : GPP_B5 ==> ISH_I2C0_SDA */
64  PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1),
65  /* B6 : GPP_B6 ==> ISH_I2C0_SCL */
66  PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1),
67  /* B7 : GPP_B7 ==> NC */
68  PAD_NC(GPP_B7, NONE),
69  /* B8 : GPP_B8 ==> NC */
70  PAD_NC(GPP_B8, NONE),
71  /* B9 : GPP_B9 ==> NC */
72  PAD_NC(GPP_B9, NONE),
73  /* B10 : GPP_B10 ===> NC */
75  /* B11 : GPP_B11 ==> TBT_I2C_INT# */
76  PAD_CFG_NF(GPP_B11, NONE, DEEP, NF1),
77  /* B12 : GPP_B12 ==> SIO_SLP_S0# */
78  PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),
79  /* B13 : PLTRST# ==> PCH_PLTRST# */
80  PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),
81  /* B14 : GPP_B14 ==> SPKR (PIN STRAP, Top Swap Override) */
82  PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1),
83  /* B15 : GPP_B15 ==> SPK_DET0# */
84  PAD_CFG_GPI(GPP_B15, NONE, PLTRST),
85  /* B16 : GPP_B16 ==> ONE_DIMM# */
86  PAD_CFG_GPI(GPP_B16, NONE, PLTRST),
87  /* B17 : GPP_B17 ==> HOST_SD_WP# */
88  PAD_CFG_GPO(GPP_B17, 0, PLTRST),
89  /* B18 : GPP_B18 ==> NRB_BIT (PIN STRAP, No Reboot) */
91  /* B19 : GPP_B19 ==> D3_RST# */
92  PAD_CFG_GPO(GPP_B19, 0, DEEP),
93  /* B20 : GPP_B20 ==> LCD_CBL_DET# */
94  PAD_CFG_GPI(GPP_B20, NONE, PLTRST),
95  /* B21 : GPP_B21 ==> PCH_TOUCH_SCREEN_EN */
96  PAD_CFG_GPO(GPP_B21, 0, DEEP),
97  /* B22 : GPP_B22 ==> NC */
99  /* B23 : GPP_B23 ==> NC (PIN STRAP, CPUNSSC frequency) */
100  PAD_NC(GPP_B23, NONE),
101 
102  /* C0 : GPP_C0 ==> MEM_SMBCLK */
103  PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),
104  /* C1 : GPP_C1 ==> MEM_SMBDATA */
105  PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1),
106  /* C2 : GPP_C2 ==> NC (PIN STRAP, TLS Confidentiality) */
107  PAD_NC(GPP_C2, NONE),
108  /* C3 : GPP_C3 ==> SML0_SMBCLK */
109  PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),
110  /* C4 : GPP_C4 ==> SML0_SMBDATA */
111  PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),
112  /* C5 : GPP_C5 ==> NC (PIN STRAP, Boot Strap 0) */
113  PAD_NC(GPP_C5, NONE),
114  /* C6 : GPP_C6 ==> SML1_SMBCLK */
115  PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1),
116  /* C7 : GPP_C7 ==> SML1_SMBDATA */
117  PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1),
118  /* C8 : GPP_C8 ==> WWAN_FULL_POWER_EN */
119  PAD_CFG_GPO(GPP_C8, 1, DEEP),
120  /* C9 : GPP_C9 ==> SBIOS_TX */
121  PAD_CFG_GPO(GPP_C9, 0, PLTRST),
122  /* C10 : GPP_C10 ==> NC */
123  PAD_NC(GPP_C10, NONE),
124  /* C11 : GPP_C11 ==> NC */
125  PAD_NC(GPP_C11, NONE),
126  /* C12 : GPP_C12 ==> NC */
127  PAD_NC(GPP_C12, NONE),
128  /* C13 : GPP_C13 ==> PCH_SSD_PWR_EN */
129  PAD_CFG_GPO(GPP_C13, 1, DEEP),
130  /* C14 : GPP_C14 ==> NC */
131  PAD_NC(GPP_C14, NONE),
132  /* C15 : GPP_C15 ==> NC */
133  PAD_NC(GPP_C15, NONE),
134  /* C16 : GPP_C16 ==> I2C0_SDA_TS */
135  PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),
136  /* C17 : GPP_C17 ==> I2C0_SCL_TS */
137  PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),
138  /* C18 : GPP_C18 ==> I2C1_SDA_TP */
139  PAD_CFG_NF(GPP_C18, NONE, DEEP, NF1),
140  /* C19 : GPP_C19 ==> I2C1_SCL_TP */
141  PAD_CFG_NF(GPP_C19, NONE, DEEP, NF1),
142  /* C20 : GPP_C20 ==> PCHRX_SERVOTX_UART */
143  PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1),
144  /* C21 : CPP_G21 ==> PCHTX_SERVORX_UART */
145  PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1),
146  /* C22 : GPP_C22 ==> H1_FLASH_WP */
147  PAD_CFG_GPI(GPP_C22, NONE, DEEP),
148  /* C23 : GPP_C23 ==> H1_PCH_INT# */
149  PAD_CFG_GPI_APIC(GPP_C23, NONE, DEEP, LEVEL, INVERT),
150 
151  /* D0 : GPP_D0 ==> ISH_ACC1_INT */
152  PAD_CFG_NF(GPP_D0, NONE, DEEP, NF1),
153  /* D1 : GPP_D1 ==> ISH_ACC2_INT */
154  PAD_CFG_NF(GPP_D1, NONE, DEEP, NF1),
155  /* D2 : GPP_D2 ==> ISH_TABLE_MODE# */
156  PAD_CFG_NF(GPP_D2, NONE, DEEP, NF1),
157  /* D3 : GPP_D3 ==> ISH_ALS_INT# */
158  PAD_CFG_NF(GPP_D3, NONE, DEEP, NF1),
159  /* D4 : GPP_D4 ==> RT_FORCE_PWR */
160  PAD_CFG_GPO(GPP_D4, 0, PLTRST),
161  /* D5 : GPP_D5 ==> CLKREQ_PCIE#0 */
162  PAD_CFG_NF(GPP_D5, NONE, DEEP, NF1),
163  /* D6 : GPP_D6 ==> CLKREQ_PCIE#1 */
164  PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1),
165  /* D7 : GPP_D7 ==> CLKREQ_PCIE#2 */
166  PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1),
167  /* D8 : GPP_D8 ==> CLKREQ_PCIE#3 */
168  PAD_CFG_NF(GPP_D8, NONE, DEEP, NF1),
169  /* D9 : GPP_D9 ==> TBT_2_LSX_TX */
170  PAD_CFG_NF(GPP_D9, NONE, DEEP, NF4),
171  /* D10 : GPP_D10 ==> TBT_2_LSX_RX */
172  PAD_CFG_NF(GPP_D10, NONE, DEEP, NF4),
173  /* D11 : GPP_D11 ==> TBT_3_LSX_TX */
174  PAD_CFG_NF(GPP_D11, NONE, DEEP, NF4),
175  /* D12 : GPP_D12 ==> TBT_3_LSX_RX */
176  PAD_CFG_NF(GPP_D12, DN_20K, DEEP, NF4),
177  /* D13 : GPP_D13 ==> SML0B_SMLDATA */
178  PAD_CFG_NF(GPP_D13, NONE, DEEP, NF2),
179  /* D14 : GPP_D14 ==> SML0B_SMLCLK */
180  PAD_CFG_NF(GPP_D14, NONE, DEEP, NF2),
181  /* D15 : GPP_D15 ==> NC */
182  PAD_NC(GPP_D15, NONE),
183  /* D16 : GPP_D16 ==> SML0BALERT# */
184  PAD_CFG_NF(GPP_D16, NONE, DEEP, NF2),
185  /* D17 : GPP_D17 ==> ISH_NB_MODE# */
186  PAD_CFG_NF(GPP_D17, NONE, DEEP, NF1),
187  /* D18 : GPP_D18 ==> ISH_LID_CL#_NB */
188  PAD_CFG_NF(GPP_D18, NONE, DEEP, NF1),
189  /* D19 : GPP_D19 ==> NC */
190  PAD_NC(GPP_D19, NONE),
191 
192  /* E0 : GPP_E0 ==> NC */
193  PAD_NC(GPP_E0, NONE),
194  /* E1 : GPP_E1 ==> TOUCH_SCREEN_INT# */
195  PAD_CFG_GPI_APIC(GPP_E1, NONE, PLTRST, LEVEL, INVERT),
196  /* E2 : GPP_E2 ==> MEDIACARD_IRQ# */
197  PAD_CFG_GPI_APIC(GPP_E2, NONE, PLTRST, LEVEL, INVERT),
198  /* E3 : GPP_E3 ==> MEM_INTERLEAVED */
199  PAD_CFG_GPI(GPP_E3, NONE, PLTRST),
200  /* E4 : GPP_E4 ==> NC */
201  PAD_NC(GPP_E4, NONE),
202  /* E5 : GPP_E5 ==> M2280_DEVSLP */
203  PAD_CFG_NF(GPP_E5, NONE, DEEP, NF1),
204  /* E6 : GPP_E6 ==> (PIN STRAP, Reserved) */
205  PAD_NC(GPP_E6, NONE),
206  /* E7 : CPU_GP1 ==> PCH_TOUCHPAD_INTR# */
207  PAD_CFG_GPI_IRQ_WAKE(GPP_E7, NONE, PLTRST, LEVEL, INVERT),
208  /* E8 : GPP_E8 ==> SECURE_BIO */
209  PAD_CFG_GPO(GPP_E8, 0, PLTRST),
210  /* E9 : GPP_E9 ==> OC0# */
211  PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1),
212  /* E10 : GPP_E10 ==> HDMI_PD# */
213  PAD_CFG_GPO(GPP_E10, 1, DEEP),
214  /* E11 : GPP_E11 ==> VPRO_DET# */
215  PAD_CFG_GPI(GPP_E11, NONE, PLTRST),
216  /* E12 : GPP_E12 ==> RTC_DET# */
217  PAD_CFG_GPI(GPP_E12, NONE, PLTRST),
218  /* E13 : GPP_E13 ==> TBT_DET# */
219  PAD_CFG_GPI(GPP_E13, NONE, DEEP),
220  /* E14 : GPP_E14 ==> EPD_HPD */
221  PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),
222  /* E15 : GPP_E15 ==> ISH_LID_CL#_TAB */
223  PAD_CFG_NF(GPP_E15, NONE, DEEP, NF1),
224  /* E16 : GPP_E16 ==> NC */
225  PAD_NC(GPP_E16, NONE),
226  /* E17 : GPP_E17 ==> NC */
227  PAD_NC(GPP_E17, NONE),
228  /* E18 : GPP_E18 ==> TBT_LSX0_TXD */
229  PAD_CFG_NF(GPP_E18, NONE, DEEP, NF4),
230  /* E19 : GPP_E19 ==> TBT_LSX0_RXD */
231  PAD_CFG_NF(GPP_E19, NONE, DEEP, NF4),
232  /* E20 : GPP_E20 ==> TBT_LSX1_TXD */
233  PAD_CFG_NF(GPP_E20, NONE, DEEP, NF4),
234  /* E21 : GPP_E21 ==> TBT_LSX1_RXD */
235  PAD_CFG_NF(GPP_E21, NONE, DEEP, NF4),
236  /* E22 : GPP_E22 ==> NC */
237  PAD_NC(GPP_E22, NONE),
238  /* E23 : GPP_E23 ==> NC */
239  PAD_NC(GPP_E23, NONE),
240 
241  /* F0 : GPP_F0 ==> BRI_DT_1P8 */
242  PAD_CFG_NF(GPP_F0, NONE, DEEP, NF1),
243  /* F1 : GPP_F1 ==> CNV_BRI_RSP_1P8 */
244  PAD_CFG_NF(GPP_F1, NONE, DEEP, NF1),
245  /* F2 : GPP_F2 ==> CNV_RGI_DT_1P8 */
246  PAD_CFG_NF(GPP_F2, NONE, DEEP, NF1),
247  /* F3 : GPP_F3 ==> CNV_RGI_RSP_1P8 */
248  PAD_CFG_NF(GPP_F3, NONE, DEEP, NF1),
249  /* F4 : GPP_F4 ==> NC */
250  PAD_NC(GPP_F4, NONE),
251  /* F5 : GPP_F5 ==> NC */
252  PAD_NC(GPP_F5, NONE),
253  /* F6 : GPP_F6 ==> NC */
254  PAD_NC(GPP_F6, NONE),
255  /* F7 : GPP_F7 ==> NC (PIN STRAP, Reserved) */
256  PAD_NC(GPP_F7, NONE),
257  /* F8 : GPP_F8 ==> NC */
258  PAD_NC(GPP_F8, NONE),
259  /* F9 : GPP_F9 ==> NC */
260  PAD_NC(GPP_F9, NONE),
261  /* F10 : GPP_F10 ==> NC (PIN STRAP, Reserved) */
262  PAD_NC(GPP_F10, NONE),
263  /* F11 : GPP_F11 ==> MEM_CONFIG0_1P8 */
264  PAD_CFG_GPI(GPP_F11, NONE, DEEP),
265  /* F12 : GPP_F12 ==> MEM_CONFIG1_1P8 */
266  PAD_CFG_GPI(GPP_F12, NONE, DEEP),
267  /* F13 : GPP_F13 ==> MEM_CONFIG2_1P8 */
268  PAD_CFG_GPI(GPP_F13, NONE, DEEP),
269  /* F14 : GPP_F14 ==> MEM_CONFIG3_1P8 */
270  PAD_CFG_GPI(GPP_F14, NONE, DEEP),
271  /* F15 : GPP_F15 ==> MEM_CONFIG4_1P8 */
272  PAD_CFG_GPI(GPP_F15, NONE, DEEP),
273  /* F16 : GPP_F16 ==> WWAN_BB_RST#_1P8 */
274  PAD_CFG_GPO(GPP_F16, 1, DEEP),
275  /* F17 : GPP_F17 ==> WWAN_GPIO_PERST# */
276  PAD_CFG_GPO(GPP_F17, 0, DEEP),
277  /* F18 : GPP_F18 ==> WWAN_GPIO_WAKE# */
278  PAD_CFG_GPI_SCI_LOW(GPP_F18, NONE, DEEP, EDGE_SINGLE),
279  /* F19 : GPP_F19 ==> CAM_MIC_CBL_DET# */
280  PAD_CFG_GPI(GPP_F19, NONE, PLTRST),
281  /* F20 : GPP_F20 ==> NC */
282  PAD_NC(GPP_F20, NONE),
283  /* F21 : GPP_F21 ==> NC */
284  PAD_NC(GPP_F21, NONE),
285  /* F22 : VNN_CTRL */
286  PAD_CFG_NF(GPP_F22, NONE, DEEP, NF1),
287  /* F23 : V1P05_CTRL */
288  PAD_CFG_NF(GPP_F23, NONE, DEEP, NF1),
289 
290  /* H0 : GPPH0_BOOT_STRAP1 */
291  PAD_NC(GPP_H0, NONE),
292  /* H1 : GPPH1_BOOT_STRAP2 */
293  PAD_NC(GPP_H1, NONE),
294  /* H2 : GPPH2_BOOT_STRAP3 */
295  PAD_NC(GPP_H2, NONE),
296  /* H3 : GPP_H3 ==> NC */
297  PAD_NC(GPP_H3, NONE),
298  /* H4 : GPP_H4 ==> DDR_CHA_EN_1P8 */
299  PAD_CFG_GPI(GPP_H4, NONE, DEEP),
300  /* H5 : GPP_H5 ==> DDR_CHB_EN_1P8 */
301  PAD_CFG_GPI(GPP_H5, NONE, DEEP),
302  /* H6 : GPP_H6 ==> I2C_SDA_PCH_H1 */
303  PAD_CFG_NF(GPP_H6, NONE, DEEP, NF1),
304  /* H7 : GPP_H7 ==> I2C_SCL_PCH_H1 */
305  PAD_CFG_NF(GPP_H7, NONE, DEEP, NF1),
306  /* H8 : GPP_H8 ==> NC */
307  PAD_NC(GPP_H8, NONE),
308  /* H9 : GPP_H9 ==> NC */
309  PAD_NC(GPP_H9, NONE),
310  /* H10 : GPP_H10 ==> CLKREQ_PCIE#4 */
311  PAD_CFG_NF(GPP_H10, NONE, DEEP, NF1),
312  /* H11 : GPP_H11 ==> CLKREQ_PCIE#5 */
313  PAD_CFG_NF(GPP_H11, NONE, DEEP, NF1),
314  /* H12 : GPP_H12 ==> NC */
315  PAD_NC(GPP_H12, NONE),
316  /* H13 : GPP_H13 ==> NC */
317  PAD_NC(GPP_H13, NONE),
318  /* H14 : GPP_H14 ==> NC */
319  PAD_NC(GPP_H14, NONE),
320  /* H15 : GPP_H15 ==> NC */
321  PAD_NC(GPP_H15, NONE),
322  /* H16 : GPP_H16 ==> CPU_DPB_CTRL_CLK */
323  PAD_CFG_NF(GPP_H16, NONE, DEEP, NF1),
324  /* H17 : GPP_H17 ==> CPU_DPB_CTRL_DATA */
325  PAD_CFG_NF(GPP_H17, NONE, DEEP, NF1),
326  /* H18 : CPU_C10_GATE# ==> CPU_C10_GATE# */
327  PAD_CFG_NF(GPP_H18, NONE, DEEP, NF1),
328  /* H19 : GPP_H19 ==> NC */
329  PAD_NC(GPP_H19, NONE),
330  /* H20 : GPP_H20 ==> NC */
331  PAD_NC(GPP_H20, NONE),
332  /* H21 : GPP_H21 ==> NC */
333  PAD_NC(GPP_H21, NONE),
334  /* H22 : GPP_H22 ==> NC */
335  PAD_NC(GPP_H22, NONE),
336  /* H23 : GPP_H23 ==> NC */
337  PAD_NC(GPP_H23, NONE),
338 
339  /* R0 : GPP_R0 ==> HDA_BCLK */
340  PAD_CFG_NF(GPP_R0, NONE, DEEP, NF1),
341  /* R1 : GPP_R1 ==> HDA_SYNC */
342  PAD_CFG_NF(GPP_R1, NONE, DEEP, NF1),
343  /* R2 : GPP_R2 ==> HDA_SDO (PIN STRAP, Flash Descriptor Security Override */
344  PAD_CFG_NF(GPP_R2, NONE, DEEP, NF1),
345  /* R3 : GPP_R3 ==> HDA_SDIO */
346  PAD_CFG_NF(GPP_R3, NONE, DEEP, NF1),
347  /* R4 : GPP_R4 ==> HDA_RST# */
348  PAD_CFG_NF(GPP_R4, NONE, DEEP, NF1),
349  /* R5 : GPP_R5 ==> NC */
350  PAD_NC(GPP_R5, NONE),
351  /* R6 : GPP_R6 ==> SD_PWR_EN1 */
352  PAD_CFG_GPO(GPP_R6, 0, PLTRST),
353  /* R7 : GPP_R7 ==> SD_PWR_EN2 */
354  PAD_CFG_GPO(GPP_R7, 0, PLTRST),
355 
356  /* S0 : GPP_S0 ==> NC */
357  PAD_NC(GPP_S0, NONE),
358  /* S1 : GPP_S1 ==> NC */
359  PAD_NC(GPP_S1, NONE),
360  /* S2 : GPP_S2 ==> NC */
361  PAD_NC(GPP_S2, NONE),
362  /* S3 : GPP_S3 ==> NC */
363  PAD_NC(GPP_S3, NONE),
364  /* S4 : GPP_S4 ==> NC */
365  PAD_NC(GPP_S4, NONE),
366  /* S5 : GPP_S5 ==> NC */
367  PAD_NC(GPP_S5, NONE),
368  /* S6 : GPP_S6 ==> NC */
369  PAD_NC(GPP_S6, NONE),
370  /* S7 : GPP_S7 ==> NC */
371  PAD_NC(GPP_S7, NONE),
372 
373  /* GPD0: GPD0 ==> PCH_BATLOW# */
374  PAD_CFG_NF(GPD0, NONE, DEEP, NF1),
375  /* GPD1: GPD1 ==> AC_PRESENT */
376  PAD_CFG_NF(GPD1, NONE, DEEP, NF1),
377  /* GPD2: GPD2 ==> LAN_WAKE# */
378  PAD_CFG_NF(GPD2, NONE, DEEP, NF1),
379  /* GPD3: GPD3 ==> SIO_PWRBTN# */
380  PAD_CFG_NF(GPD3, UP_20K, DEEP, NF1),
381  /* GPD4: GPD4 ==> SIO_SLP_S3# */
382  PAD_CFG_NF(GPD4, NONE, DEEP, NF1),
383  /* GPD5: GPD5 ==> SIO_SLP_S4# */
384  PAD_CFG_NF(GPD5, NONE, DEEP, NF1),
385  /* GPD6: GPD6 ==> SIO_SLP_A# */
386  PAD_CFG_NF(GPD6, NONE, DEEP, NF1),
387  /* GPD7: GPD7 ==> PCH_TBT_PERST# (PIN STRAP, Reserved) */
388  PAD_CFG_GPO(GPD7, 0, PLTRST),
389  /* GPD8: GPD8 ==> SUSCLK */
390  PAD_CFG_NF(GPD8, NONE, DEEP, NF1),
391  /* GPD9: GPD9 ==> SIO_SLP_WLAN# */
392  PAD_CFG_NF(GPD9, NONE, DEEP, NF1),
393  /* GPD10: GPD10 ==> SIO_SLP_S5# */
394  PAD_CFG_NF(GPD10, NONE, DEEP, NF1),
395  /* GPD11: GPD11 ==> PM_LANPHY_EN */
396  PAD_CFG_NF(GPD11, NONE, DEEP, NF1),
397 };
398 
399 const struct pad_config *__weak variant_base_gpio_table(size_t *num)
400 {
401  *num = ARRAY_SIZE(gpio_table);
402  return gpio_table;
403 }
404 
405 static const struct cros_gpio cros_gpios[] = {
406  CROS_GPIO_REC_AL(GPIO_REC_MODE, CROS_GPIO_DEVICE_NAME),
407  CROS_GPIO_WP_AH(GPIO_PCH_WP, CROS_GPIO_DEVICE_NAME),
408 };
409 
411 
412 /* Weak implementation of overrides */
414 {
415  *num = 0;
416  return NULL;
417 }
418 
419 /* Weak implementation of early gpio */
420 const struct pad_config *__weak variant_early_gpio_table(size_t *num)
421 {
422  *num = 0;
423  return NULL;
424 }
425 
427 {
428  return 0;
429 }
#define GPD11
#define GPP_H22
#define GPP_C15
#define GPD3
#define GPP_H20
#define GPP_B6
Definition: gpio_soc_defs.h:59
#define GPP_H19
#define GPP_D1
#define GPD9
#define GPP_C2
#define GPP_D10
#define GPP_D8
#define GPP_D17
#define GPP_E3
#define GPP_A18
#define GPP_F21
#define GPP_C12
#define GPP_F12
#define GPP_F16
#define GPP_S4
#define GPP_H15
#define GPP_H16
#define GPP_R4
#define GPP_E0
#define GPP_R7
#define GPP_F6
#define GPP_H18
#define GPP_D14
#define GPP_B1
Definition: gpio_soc_defs.h:54
#define GPP_F20
#define GPP_S0
#define GPP_F23
#define GPP_C5
#define GPP_H11
#define GPP_A14
#define GPP_B12
Definition: gpio_soc_defs.h:65
#define GPP_H17
#define GPP_D12
#define GPP_S5
#define GPP_B16
Definition: gpio_soc_defs.h:69
#define GPP_B2
Definition: gpio_soc_defs.h:55
#define GPP_D7
#define GPP_R3
#define GPP_B13
Definition: gpio_soc_defs.h:66
#define GPP_E6
#define GPP_F0
#define GPP_D6
#define GPP_A19
#define GPP_D2
#define GPP_H12
#define GPP_H6
#define GPP_C9
#define GPP_H2
#define GPP_C22
#define GPP_R6
#define GPP_H9
#define GPD0
#define GPP_D9
#define GPP_R0
#define GPP_F5
#define GPP_B15
Definition: gpio_soc_defs.h:68
#define GPP_E13
#define GPP_H21
#define GPP_C23
#define GPP_H13
#define GPP_C8
#define GPP_S7
#define GPP_D11
#define GPP_H7
#define GPP_H1
#define GPP_C11
#define GPP_H14
#define GPP_D5
#define GPP_B22
Definition: gpio_soc_defs.h:75
#define GPP_A23
#define GPP_C18
#define GPP_F9
#define GPP_S3
#define GPP_C13
#define GPP_E14
#define GPP_E23
#define GPP_E9
#define GPP_C17
#define GPP_E8
#define GPP_A7
#define GPP_E5
#define GPD7
#define GPP_B8
Definition: gpio_soc_defs.h:61
#define GPP_S1
#define GPP_C20
#define GPP_B20
Definition: gpio_soc_defs.h:73
#define GPP_A20
#define GPP_A16
#define GPP_F1
#define GPP_F17
#define GPP_A12
#define GPP_F15
#define GPP_D4
#define GPP_C10
#define GPP_C6
#define GPD2
#define GPP_F10
#define GPP_E7
#define GPP_C16
#define GPP_F7
#define GPD1
#define GPP_F13
#define GPP_C4
#define GPP_D18
#define GPP_S6
#define GPP_B19
Definition: gpio_soc_defs.h:72
#define GPP_E17
#define GPP_E2
#define GPP_E19
#define GPP_H0
#define GPP_H5
#define GPP_C21
#define GPP_R2
#define GPP_B9
Definition: gpio_soc_defs.h:62
#define GPD10
#define GPP_E18
#define GPP_F14
#define GPP_H3
#define GPP_F4
#define GPP_A10
#define GPP_A8
#define GPP_D0
#define GPP_B14
Definition: gpio_soc_defs.h:67
#define GPP_B11
Definition: gpio_soc_defs.h:64
#define GPP_D13
#define GPP_B18
Definition: gpio_soc_defs.h:71
#define GPP_B5
Definition: gpio_soc_defs.h:58
#define GPP_B0
Definition: gpio_soc_defs.h:53
#define GPP_A11
#define GPP_R5
#define GPP_C14
#define GPP_E20
#define GPP_A15
#define GPP_A9
#define GPP_E10
#define GPP_F8
#define GPP_C19
#define GPD8
#define GPP_A13
#define GPP_S2
#define GPP_A21
#define GPP_B23
Definition: gpio_soc_defs.h:76
#define GPP_E15
#define GPP_B10
Definition: gpio_soc_defs.h:63
#define GPP_E16
#define GPP_D19
#define GPP_C1
#define GPP_F2
#define GPP_E11
#define GPD6
#define GPP_F18
#define GPP_B3
Definition: gpio_soc_defs.h:56
#define GPP_A22
#define GPP_F22
#define GPP_D15
#define GPP_F11
#define GPP_B21
Definition: gpio_soc_defs.h:74
#define GPD4
#define GPP_B4
Definition: gpio_soc_defs.h:57
#define GPP_D16
#define GPP_F3
#define GPP_E22
#define GPP_H10
#define GPP_E21
#define GPP_C3
#define GPP_E12
#define GPP_A17
#define GPP_B17
Definition: gpio_soc_defs.h:70
#define GPP_E4
#define GPP_C0
#define GPD5
#define GPP_E1
#define GPP_H8
#define GPP_F19
#define GPP_H4
#define GPP_H23
#define GPP_B7
Definition: gpio_soc_defs.h:60
#define GPP_C7
#define GPP_D3
#define GPP_R1
#define ARRAY_SIZE(a)
Definition: helpers.h:12
#define GPIO_REC_MODE
Definition: onboard.h:20
const struct pad_config * variant_early_gpio_table(size_t *num)
Definition: gpio.c:204
DECLARE_WEAK_CROS_GPIOS(cros_gpios)
#define GPIO_PCH_WP
Definition: gpio.h:14
const struct pad_config *__weak variant_base_gpio_table(size_t *num)
Definition: gpio.c:444
const struct pad_config *__weak variant_override_gpio_table(size_t *num)
Definition: gpio.c:450
static const struct pad_config gpio_table[]
Definition: gpio.c:9
int __weak has_360_sensor_board(void)
Definition: gpio.c:426
static const struct cros_gpio cros_gpios[]
Definition: gpio.c:405
const struct smm_save_state_ops *legacy_ops __weak
Definition: save_state.c:8
#define PAD_NC(pin)
Definition: gpio_defs.h:263
#define CROS_GPIO_DEVICE_NAME
Definition: gpio.h:14
#define PAD_CFG_GPI(pad, pull, rst)
Definition: gpio_defs.h:284
#define PAD_CFG_GPI_SCI_LOW(pad, pull, rst, trig)
Definition: gpio_defs.h:452
#define PAD_CFG_NF(pad, pull, rst, func)
Definition: gpio_defs.h:197
#define PAD_CFG_GPI_APIC(pad, pull, rst, trig, inv)
Definition: gpio_defs.h:376
#define PAD_CFG_GPO(pad, val, rst)
Definition: gpio_defs.h:247
#define NULL
Definition: stddef.h:19