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-only */
2 
3 #include "gpio.h"
4 
5 /*
6  * GPIO Pad configuration in ramstage.
7  */
8 static const struct pad_config gpio_table_config[] = {
9  PAD_CFG_GPO(GPIO_0, 1, DEEP),
10  PAD_CFG_GPO(GPIO_1, 1, DEEP),
11  PAD_CFG_NF(GPIO_2, DN_20K, DEEP, NF1),
12  PAD_CFG_NF(GPIO_3, DN_20K, DEEP, NF1),
13  PAD_CFG_NF(GPIO_4, DN_20K, DEEP, NF1),
14  PAD_CFG_NF(GPIO_5, DN_20K, DEEP, NF1),
15  PAD_CFG_NF(GPIO_6, DN_20K, DEEP, NF1),
16  PAD_CFG_NF(GPIO_7, DN_20K, DEEP, NF1),
17  PAD_CFG_NF(GPIO_8, DN_20K, DEEP, NF1),
18  PAD_CFG_NF(GPIO_9, DN_20K, DEEP, NF1),
19  PAD_CFG_GPI(GPIO_10, DN_20K, DEEP),
20  PAD_CFG_NF(GPIO_11, DN_20K, DEEP, NF1),
21  PAD_CFG_NF(GPIO_12, DN_20K, DEEP, NF1),
22  PAD_CFG_NF(GPIO_13, DN_20K, DEEP, NF1),
23  PAD_CFG_NF(GPIO_14, DN_20K, DEEP, NF1),
24  PAD_CFG_GPO(GPIO_15, 1, DEEP),
25  PAD_CFG_GPI(GPIO_16, UP_20K, DEEP),
26  PAD_CFG_NF(GPIO_17, UP_20K, DEEP, NF1),
27  PAD_CFG_NF(GPIO_18, UP_20K, DEEP, NF1),
28  PAD_CFG_NF(GPIO_19, UP_20K, DEEP, NF1),
29  PAD_CFG_NF(GPIO_20, DN_20K, DEEP, NF1),
30  PAD_CFG_NF(GPIO_21, DN_20K, DEEP, NF1),
31  PAD_CFG_GPO(GPIO_22, 1, DEEP),/* Power Enable */
32  PAD_CFG_GPO(GPIO_23, 1, DEEP),/* LB USB Power */
33  PAD_CFG_NF(GPIO_24, DN_20K, DEEP, NF5),/* SATA_DEVSLP0 */
34  PAD_CFG_GPI(GPIO_25, DN_20K, DEEP),/* OSS MD/DA SCI */
35  PAD_CFG_NF(GPIO_26, DN_20K, DEEP, NF5),/* SATA_LEDN */
36  PAD_CFG_GPO(GPIO_27, 1, DEEP),/* DFU */
37  PAD_CFG_NF(GPIO_28, DN_20K, DEEP, NF2),
38  PAD_CFG_NF(GPIO_29, DN_20K, DEEP, NF2),
39  PAD_CFG_NF(GPIO_30, DN_20K, DEEP, NF1),
40  PAD_CFG_NF(GPIO_31, DN_20K, DEEP, NF5),/* SUSCLK1 */
41  PAD_CFG_NF(GPIO_32, DN_20K, DEEP, NF5),
42  PAD_CFG_NF(GPIO_33, DN_20K, DEEP, NF5),/* SUSCLK3 */
43  /* PWM */
44  PAD_CFG_NF(GPIO_34, DN_20K, DEEP, NF1),/* PWM */
45  PAD_CFG_GPO(GPIO_35, 1, DEEP),/* Power Enable */
46  PAD_CFG_NF(GPIO_36, DN_20K, DEEP, NF1),/* PWM */
47  PAD_CFG_NF(GPIO_37, NONE, DEEP, NF1),/* Reset */
48  /* UART */
49  PAD_CFG_NF(GPIO_38, UP_20K, DEEP, NF1),/* LPSS_UART0_RXD */
50  PAD_CFG_NF(GPIO_39, UP_20K, DEEP, NF1),/* LPSS_UART0_TXD */
51  PAD_CFG_NF(GPIO_40, UP_20K, DEEP, NF1),/* LPSS_UART0_RTS_B */
52  PAD_CFG_NF(GPIO_41, UP_20K, DEEP, NF1),/* LPSS_UART0_CTS_B */
53  PAD_CFG_NF(GPIO_42, UP_20K, DEEP, NF1),/* LPSS_UART1_RXD */
54  PAD_CFG_NF(GPIO_43, UP_20K, DEEP, NF1),/* LPSS_UART1_TXD */
55  PAD_CFG_NF(GPIO_44, UP_20K, DEEP, NF1),/* LPSS_UART1_RTS_B */
56  PAD_CFG_NF(GPIO_45, NONE, DEEP, NF1),/* LPSS_UART1_CTS_B */
57 
58  PAD_CFG_NF(GPIO_46, UP_20K, DEEP, NF1), /* LPSS_UART2_RXD */
59  PAD_CFG_NF(GPIO_47, UP_20K, DEEP, NF1), /* LPSS_UART2_TXD */
60 
61  PAD_CFG_GPI(GPIO_48, UP_20K, DEEP),/* LPSS_UART2_RTS_B */
62  PAD_CFG_NF(GPIO_49, UP_20K, DEEP, NF1),/* LPSS_UART2_CTS_B */
63  PAD_CFG_GPO(GPIO_62, 0, DEEP),/* GP_CAMERASB00 */
64  PAD_CFG_GPO(GPIO_63, 0, DEEP),/* GP_CAMERASB01 */
65  PAD_CFG_GPO(GPIO_64, 0, DEEP),/* GP_CAMERASB02 */
66  PAD_CFG_GPO(GPIO_65, 0, DEEP),/* GP_CAMERASB03 */
67  PAD_CFG_GPO(GPIO_66, 0, DEEP),/* GP_CAMERASB04 */
68  PAD_CFG_GPO(GPIO_67, 0, DEEP),/* GP_CAMERASB05 */
69  PAD_CFG_GPO(GPIO_68, 0, DEEP),/* GP_CAMERASB06 */
70  PAD_CFG_GPO(GPIO_69, 0, DEEP),/* GP_CAMERASB07 */
71  PAD_CFG_GPO(GPIO_70, 0, DEEP),/* GP_CAMERASB08 */
72  PAD_CFG_GPO(GPIO_71, 0, DEEP),/* GP_CAMERASB09 */
73  PAD_CFG_GPO(GPIO_72, 0, DEEP),/* GP_CAMERASB10 */
74  PAD_CFG_GPO(GPIO_73, 0, DEEP),/* GP_CAMERASB11 */
75  PAD_CFG_NF(TCK, DN_20K, DEEP, NF1), /* TCK */
76  PAD_CFG_NF(TRST_B, DN_20K, DEEP, NF1),/* TRST_B */
77  PAD_CFG_NF(TMS, UP_20K, DEEP, NF1),/* TMS */
78  PAD_CFG_NF(TDI, UP_20K, DEEP, NF1),/* TDI */
79  PAD_CFG_NF(CX_PMODE, NONE, DEEP, NF1),/* CX_PMODE */
80  PAD_CFG_NF(CX_PREQ_B, UP_20K, DEEP, NF1),/* CX_PREQ_B */
81  PAD_CFG_NF(JTAGX, UP_20K, DEEP, NF1),/* JTAGX */
82  PAD_CFG_NF(CX_PRDY_B, UP_20K, DEEP, NF1),/* CX_PRDY_B */
83  PAD_CFG_NF(TDO, UP_20K, DEEP, NF1),/* TDO */
84  PAD_CFG_GPI(CNV_BRI_DT, DN_20K, DEEP),/* CNV_BRI_DT */
85  PAD_CFG_GPI(CNV_BRI_RSP, DN_20K, DEEP),/* CNV_BRI_RSP */
86  PAD_CFG_GPI(CNV_RGI_DT, DN_20K, DEEP),/* CNV_RGI_DT */
87  PAD_CFG_GPI(CNV_RGI_RSP, DN_20K, DEEP),/* CNV_RGI_RSP */
88  PAD_CFG_NF(SVID0_ALERT_B, NONE, DEEP, NF1),/* SVID0_ALERT_B */
89  PAD_CFG_NF(SVID0_DATA, UP_20K, DEEP, NF1),/* SVID0_DATA */
90  PAD_CFG_NF(SVID0_CLK, UP_20K, DEEP, NF1),/* SVID0_CLK */
91 
92  /* North West Community */
93  PAD_CFG_NF(GPIO_187, UP_20K, DEEP, NF1),/* DDI0_CTRL_DATA */
94  PAD_CFG_NF(GPIO_188, UP_20K, DEEP, NF1),/* DDI0_CTRL_CLK */
95  PAD_CFG_NF(GPIO_189, UP_20K, DEEP, NF1),/* DDI1_CTRL_DATA */
96  PAD_CFG_NF(GPIO_190, UP_20K, DEEP, NF1),/* DDI1_CTRL_CLK */
97  PAD_CFG_NF(GPIO_191, DN_20K, DEEP, NF1),/* DBI_SDA */
98  PAD_CFG_NF(GPIO_192, DN_20K, DEEP, NF1),/* DBI_SCL */
99  PAD_CFG_NF(GPIO_193, DN_20K, DEEP, NF1),/* DISP0_VDDEN */
100  PAD_CFG_NF(GPIO_194, DN_20K, DEEP, NF1),/* DISP0_BKLTEN */
101  PAD_CFG_NF(GPIO_195, DN_20K, DEEP, NF1),/* DISP0_BLTCTL */
102  PAD_CFG_GPO(GPIO_196, 1, DEEP),/* DISP1_VDDEN */
103  PAD_CFG_GPO(GPIO_197, 1, DEEP),/* DISP1_BKLTEN */
104  PAD_CFG_GPO(GPIO_198, 1, DEEP),/* DISP1_BLTCTL */
105  PAD_CFG_NF(GPIO_199, DN_20K, DEEP, NF2),/* HDMI_HPD */
106  PAD_CFG_NF(GPIO_200, DN_20K, DEEP, NF2),/* EDP_HPD */
107  PAD_CFG_NF(GPIO_201, DN_20K, DEEP, NF1),/* DISP_INTD_TE1 */
108  PAD_CFG_NF(GPIO_202, DN_20K, DEEP, NF1),/* DISP_INTD_TE2 */
109  PAD_CFG_NF(GPIO_203, UP_20K, DEEP, NF1),/* HOST_USB_OC_N */
110  PAD_CFG_NF(GPIO_204, UP_20K, DEEP, NF1),/* OTG_USB_OC_N */
111  PAD_CFG_NF(PMC_SPI_FS0, UP_20K, DEEP, NF1),/* PMC_SPI_FS0 */
112  PAD_CFG_NF(PMC_SPI_FS1, UP_20K, DEEP, NF2),/* PMC_SPI_FS1 */
113  PAD_CFG_NF(PMC_SPI_FS2, UP_20K, DEEP, NF1),/* PMC_SPI_FS2 */
114  PAD_CFG_NF(PMC_SPI_RXD, DN_20K, DEEP, NF1),/* PMC_SPI_RXD */
115  PAD_CFG_NF(PMC_SPI_TXD, DN_20K, DEEP, NF1),/* PMC_SPI_TXD */
116  PAD_CFG_NF(PMC_SPI_CLK, DN_20K, DEEP, NF1),/* PMC_SPI_CLK */
117  PAD_CFG_GPO(PMIC_PWRGOOD, 1, DEEP),/* PMIC_PWRGOOD */
118  PAD_CFG_GPI(PMIC_RESET_B, NONE, DEEP),/* PMIC_RESET_B */
119  PAD_CFG_GPO(GPIO_213, 0xFF, DEEP),/* PMIC_SDWN_B */
120  PAD_CFG_GPO(GPIO_214, 1, DEEP),/* PMIC_BCUDISW2 */
121  PAD_CFG_GPO(GPIO_215, 1, DEEP),/* PMIC_BCUDISCRIT */
122  PAD_CFG_NF(PMIC_THERMTRIP_B, UP_20K, DEEP, NF1),/* PMIC_THERMTRIP_B */
123  PAD_CFG_GPO(PMIC_STDBY, 1, DEEP),/* PMIC_STDBY */
124  PAD_CFG_NF(PROCHOT_B, UP_20K, DEEP, NF1),/* PROCHOT_B */
125  PAD_CFG_NF(PMIC_I2C_SCL, UP_1K, DEEP, NF1),/* PMIC_I2C_SCL */
126  PAD_CFG_NF(PMIC_I2C_SDA, UP_1K, DEEP, NF1),/* PMIC_I2C_SDA */
127 
128  PAD_CFG_NF(GPIO_74, DN_20K, DEEP, NF1),/* AVS_I2S1_MCLK */
129  PAD_CFG_NF(GPIO_75, DN_20K, DEEP, NF1),/* AVS_I2S1_BCLK */
130  PAD_CFG_GPO(GPIO_76, 1, DEEP),/* AVS_I2S1_WS_SYNC */
131  PAD_CFG_GPI(GPIO_77, DN_20K, DEEP),/* AVS_I2S1_SDI */
132  PAD_CFG_GPI(GPIO_78, DN_20K, DEEP),/* AVS_I2S1_SDO */
133  PAD_CFG_NF(GPIO_79, DN_20K, DEEP, NF1),/* AVS_M_CLK_A1 */
134  PAD_CFG_NF(GPIO_80, DN_20K, DEEP, NF1),/* AVS_M_CLK_B1 */
135  PAD_CFG_NF(GPIO_81, DN_20K, DEEP, NF1),/* AVS_M_DATA_1 */
136  PAD_CFG_NF(GPIO_82, DN_20K, DEEP, NF1),/* AVS_M_CLK_AB2 */
137  PAD_CFG_NF(GPIO_83, DN_20K, DEEP, NF1),/* AVS_M_DATA_2 */
138  PAD_CFG_NF(GPIO_84, DN_20K, DEEP, NF2),/* AVS_I2S2_MCLK */
139  PAD_CFG_NF(GPIO_85, DN_20K, DEEP, NF1),/* AVS_I2S2_BCLK */
140  PAD_CFG_NF(GPIO_86, DN_20K, DEEP, NF1),/* AVS_I2S2_WS_SYNC */
141  PAD_CFG_NF(GPIO_87, DN_20K, DEEP, NF1),/* AVS_I2S2_SDI */
142  PAD_CFG_NF(GPIO_88, DN_20K, DEEP, NF1),/* AVS_I2S2_SDO */
143  PAD_CFG_NF(GPIO_89, DN_20K, DEEP, NF1),/* AVS_I2S3_BCLK */
144  PAD_CFG_NF(GPIO_90, DN_20K, DEEP, NF1),/* AVS_I2S3_WS_SYNC */
145  PAD_CFG_NF(GPIO_91, DN_20K, DEEP, NF1),/* AVS_I2S3_SDI */
146  PAD_CFG_NF(GPIO_92, DN_20K, DEEP, NF1),/* AVS_I2S3_SDO */
147  PAD_CFG_NF(GPIO_97, NONE, DEEP, NF1),/* FST_SPI_CS0_B */
148  PAD_CFG_NF(GPIO_98, NONE, DEEP, NF1),/* FST_SPI_CS1_B */
149  PAD_CFG_NF(GPIO_99, NONE, DEEP, NF1),/* FST_SPI_MOSI_IO0 */
150  PAD_CFG_NF(GPIO_100, NONE, DEEP, NF1),/* FST_SPI_MISO_IO1 */
151  PAD_CFG_NF(GPIO_101, NONE, DEEP, NF1),/* FST_SPI_IO2 */
152  PAD_CFG_NF(GPIO_102, NONE, DEEP, NF1),/* FST_SPI_IO3 */
153  PAD_CFG_NF(GPIO_103, NONE, DEEP, NF1),/* FST_SPI_CLK */
154  PAD_CFG_NF(FST_SPI_CLK_FB, NONE, DEEP, NF1),/* FST_SPI_CLK_FB */
155  PAD_CFG_NF(GPIO_104, DN_20K, DEEP, NF1),/* GP_SSP_0_CLK */
156  PAD_CFG_NF(GPIO_105, DN_20K, DEEP, NF1),/* GP_SSP_0_FS0 */
157  PAD_CFG_NF(GPIO_106, DN_20K, DEEP, NF3),/* GP_SSP_0_FS1 */
158  PAD_CFG_NF(GPIO_109, DN_20K, DEEP, NF1),/* GP_SSP_0_RXD */
159  PAD_CFG_NF(GPIO_110, DN_20K, DEEP, NF1),/* GP_SSP_0_TXD */
160  PAD_CFG_GPI(GPIO_111, DN_20K, DEEP),/* GP_SSP_1_CLK */
161  PAD_CFG_NF(GPIO_112, DN_20K, DEEP, NF2),/* GP_SSP_1_FS0 */
162  PAD_CFG_GPI(GPIO_113, DN_20K, DEEP),/* GP_SSP_1_FS1 */
163  PAD_CFG_NF(GPIO_116, DN_20K, DEEP, NF2),/* GP_SSP_1_RXD */
164  PAD_CFG_NF(GPIO_117, DN_20K, DEEP, NF2),/* GP_SSP_1_TXD */
165  PAD_CFG_NF(GPIO_118, DN_20K, DEEP, NF1),/* GP_SSP_2_CLK */
166  PAD_CFG_NF(GPIO_119, DN_20K, DEEP, NF1),/* GP_SSP_2_FS0 */
167  PAD_CFG_NF(GPIO_120, DN_20K, DEEP, NF1),/* GP_SSP_2_FS1 */
168  PAD_CFG_NF(GPIO_121, DN_20K, DEEP, NF1),/* GP_SSP_2_FS2 */
169  PAD_CFG_NF(GPIO_122, DN_20K, DEEP, NF1),/* GP_SSP_2_RXD */
170  PAD_CFG_NF(GPIO_123, DN_20K, DEEP, NF1),/* GP_SSP_2_TXD */
171 
172  /* West Community */
173  PAD_CFG_NF(GPIO_124, UP_1K, DEEP, NF1),/* LPSS_I2C0_SDA */
174  PAD_CFG_NF(GPIO_125, UP_1K, DEEP, NF1),/* LPSS_I2C0_SCL */
175  PAD_CFG_NF(GPIO_126, UP_1K, DEEP, NF1),/* LPSS_I2C1_SDA */
176  PAD_CFG_NF(GPIO_127, UP_1K, DEEP, NF1),/* LPSS_I2C1_SCL */
177  PAD_CFG_NF(GPIO_128, UP_1K, DEEP, NF1),/* LPSS_I2C2_SDA */
178  PAD_CFG_NF(GPIO_129, UP_1K, DEEP, NF1),/* LPSS_I2C2_SCL */
179  PAD_CFG_NF(GPIO_130, UP_1K, DEEP, NF2),/* LPSS_I2C3_SDA */
180  PAD_CFG_NF(GPIO_131, UP_1K, DEEP, NF2),/* LPSS_I2C3_SCL */
181  PAD_CFG_NF(GPIO_132, UP_1K, DEEP, NF1),/* LPSS_I2C4_SDA */
182  PAD_CFG_NF(GPIO_133, UP_1K, DEEP, NF1),/* LPSS_I2C4_SCL */
183 
184  PAD_CFG_NF(GPIO_134, UP_20K, DEEP, NF2),/* ISH_I2C0_SDA */
185  PAD_CFG_NF(GPIO_135, UP_20K, DEEP, NF2),/* ISH_I2C0_SCL */
186  PAD_CFG_NF(GPIO_136, UP_20K, DEEP, NF2),/* ISH_I2C1_SDA */
187  PAD_CFG_NF(GPIO_137, UP_20K, DEEP, NF2),/* ISH_I2C1_SCL */
188 
189  PAD_CFG_NF(GPIO_138, UP_1K, DEEP, NF1),/* LPSS_I2C7_SDA */
190  PAD_CFG_NF(GPIO_139, UP_1K, DEEP, NF1),/* LPSS_I2C7_SCL */
191  PAD_CFG_NF(GPIO_146, DN_20K, DEEP, NF3),/* ISH_GPIO_0 */
192  PAD_CFG_NF(GPIO_147, DN_20K, DEEP, NF3),/* ISH_GPIO_1 */
193  PAD_CFG_NF(GPIO_148, DN_20K, DEEP, NF3),/* ISH_GPIO_2 */
194  PAD_CFG_NF(GPIO_149, DN_20K, DEEP, NF3),/* ISH_GPIO_3 */
195  PAD_CFG_NF(GPIO_150, DN_20K, DEEP, NF2),/* ISH_GPIO_4 */
196 
197  PAD_CFG_GPO(GPIO_151, 0, DEEP),/* ISH_GPIO_5 */
198  PAD_CFG_NF(GPIO_152, DN_20K, DEEP, NF2),/* ISH_GPIO_6 */
199  PAD_CFG_NF(GPIO_153, DN_20K, DEEP, NF1),/* ISH_GPIO_7 */
200  PAD_CFG_GPO(GPIO_154, 1, DEEP),/* ISH_GPIO_8 */
201  PAD_CFG_NF(GPIO_155, DN_20K, DEEP, NF2),/* ISH_GPIO_9 */
202 
203  PAD_CFG_NF(GPIO_209, NONE, DEEP, NF1),/* PCIE_CLKREQ0_B */
204  PAD_CFG_NF(GPIO_210, DN_20K, DEEP, NF1),/* PCIE_CLKREQ1_B */
205  PAD_CFG_NF(GPIO_211, DN_20K, DEEP, NF1),/* PCIE_CLKREQ2_B */
206  PAD_CFG_NF(GPIO_212, DN_20K, DEEP, NF1),/* PCIE_CLKREQ3_B */
207 
208  PAD_CFG_NF(OSC_CLK_OUT_0, DN_20K, DEEP, NF1),/* OSC_CLK_OUT_0 */
209  PAD_CFG_NF(OSC_CLK_OUT_1, DN_20K, DEEP, NF1),/* OSC_CLK_OUT_1 */
210  PAD_CFG_NF(OSC_CLK_OUT_2, DN_20K, DEEP, NF1),/* OSC_CLK_OUT_2 */
211  PAD_CFG_NF(OSC_CLK_OUT_3, DN_20K, DEEP, NF1),/* OSC_CLK_OUT_3 */
212  PAD_CFG_GPI(OSC_CLK_OUT_4, DN_20K, DEEP),/* OSC_CLK_OUT_4 */
213 
214  PAD_CFG_NF(PMU_AC_PRESENT, DN_20K, DEEP, NF1),/*PMU_AC_PRESENT */
215  PAD_CFG_NF(PMU_BATLOW_B, UP_20K, DEEP, NF1),/* PMU_BATLOW_B */
216  PAD_CFG_NF(PMU_PLTRST_B, NONE, DEEP, NF1),/* PMU_PLTRST_B */
217  PAD_CFG_NF(PMU_PWRBTN_B, UP_20K, DEEP, NF1),/* PMU_PWRBTN_B */
218  PAD_CFG_NF(PMU_RESETBUTTON_B, NONE, DEEP, NF1),/* PMU_RESETBUTTON_B */
219  PAD_CFG_NF(PMU_SLP_S0_B, NONE, DEEP, NF1),/* PMU_SLP_S0_B */
220  PAD_CFG_NF(PMU_SLP_S3_B, NONE, DEEP, NF1),/* PMU_SLP_S3_B */
221  PAD_CFG_NF(PMU_SLP_S4_B, NONE, DEEP, NF1),/* PMU_SLP_S4_B */
222  PAD_CFG_NF(PMU_SUSCLK, NONE, DEEP, NF1),/* PMU_SUSCLK */
223  PAD_CFG_GPO(PMU_WAKE_B, 1, DEEP),/* PMU_WAKE_B */
224  PAD_CFG_NF(SUS_STAT_B, NONE, DEEP, NF1),/* SUS_STAT_B */
225  PAD_CFG_NF(SUSPWRDNACK, NONE, DEEP, NF1),/* SUSPWRDNACK */
226 
227  /* South West Community */
228  PAD_CFG_NF(GPIO_205, UP_20K, DEEP, NF1),/* PCIE_WAKE0_B */
229  PAD_CFG_NF(GPIO_206, UP_20K, DEEP, NF1),/* PCIE_WAKE1_B */
230  PAD_CFG_NF(GPIO_207, UP_20K, DEEP, NF1),/* PCIE_WAKE2_B */
231  PAD_CFG_NF(GPIO_208, UP_20K, DEEP, NF1),/* PCIE_WAKE3_B */
232  PAD_CFG_NF(GPIO_156, DN_20K, DEEP, NF1),/* EMMC0_CLK */
233  PAD_CFG_NF(GPIO_157, UP_20K, DEEP, NF1),/* EMMC0_D0 */
234  PAD_CFG_NF(GPIO_158, UP_20K, DEEP, NF1),/* EMMC0_D1 */
235  PAD_CFG_NF(GPIO_159, UP_20K, DEEP, NF1),/* EMMC0_D2 */
236  PAD_CFG_NF(GPIO_160, UP_20K, DEEP, NF1),/* EMMC0_D3 */
237  PAD_CFG_NF(GPIO_161, UP_20K, DEEP, NF1),/* EMMC0_D4 */
238  PAD_CFG_NF(GPIO_162, UP_20K, DEEP, NF1),/* EMMC0_D5 */
239  PAD_CFG_NF(GPIO_163, UP_20K, DEEP, NF1),/* EMMC0_D6 */
240  PAD_CFG_NF(GPIO_164, UP_20K, DEEP, NF1),/* EMMC0_D7 */
241  PAD_CFG_NF(GPIO_165, UP_20K, DEEP, NF1),/* EMMC0_CMD */
242  PAD_CFG_NF(GPIO_166, DN_20K, DEEP, NF1),/* SDIO_CLK */
243  PAD_CFG_NF(GPIO_167, UP_20K, DEEP, NF1),/* SDIO_D0 */
244  PAD_CFG_NF(GPIO_168, UP_20K, DEEP, NF1),/* SDIO_D1 */
245  PAD_CFG_NF(GPIO_169, UP_20K, DEEP, NF1),/* SDIO_D2 */
246  PAD_CFG_NF(GPIO_170, UP_20K, DEEP, NF1),/* SDIO_D3 */
247  PAD_CFG_NF(GPIO_171, UP_20K, DEEP, NF1),/* SDIO_CMD */
248  PAD_CFG_NF(GPIO_172, DN_20K, DEEP, NF1),/* SDCARD_CLK */
249  PAD_CFG_NF(GPIO_179, DN_20K, DEEP, NF1),/* SDCARD_CLK_FB */
250  PAD_CFG_NF(GPIO_173, UP_20K, DEEP, NF1),/* SDCARD_D0 */
251  PAD_CFG_NF(GPIO_174, UP_20K, DEEP, NF1),/* SDCARD_D1 */
252  PAD_CFG_NF(GPIO_175, UP_20K, DEEP, NF1),/* SDCARD_D2 */
253  PAD_CFG_NF(GPIO_176, UP_20K, DEEP, NF1),/* SDCARD_D3 */
254  PAD_CFG_GPI(GPIO_177, NONE, DEEP),/* SDCARD_CD_B */
255  PAD_CFG_NF(GPIO_178, UP_20K, DEEP, NF1),/* SDCARD_CMD */
256  PAD_CFG_GPI(GPIO_186, DN_20K, DEEP),/* SDCARD_LVL_WP */
257  PAD_CFG_NF(GPIO_182, DN_20K, DEEP, NF1),/* EMMC0_STROBE */
258  PAD_CFG_GPO(GPIO_183, 0, DEEP),/* SDIO_PWR_DOWN_B */
259  PAD_CFG_NF(SMB_ALERTB, UP_20K, DEEP, NF1),/* SMB_ALERTB */
260 
261  PAD_CFG_NF(SMB_CLK, UP_20K, DEEP, NF1),/* SMB_CLK */
262  PAD_CFG_NF(SMB_DATA, UP_20K, DEEP, NF1),/* SMB_DATA */
263  PAD_CFG_NF(LPC_ILB_SERIRQ, UP_20K, DEEP, NF1),/* LPC_ILB_SERIRQ */
264  PAD_CFG_NF(LPC_CLKOUT0, NONE, DEEP, NF1),/*LPC_CLKOUT0 */
265  PAD_CFG_NF(LPC_CLKOUT1, NONE, DEEP, NF1),/* LPC_CLKOUT1 */
266  PAD_CFG_NF(LPC_AD0, UP_20K, DEEP, NF1),/* LPC_AD0 */
267  PAD_CFG_NF(LPC_AD1, UP_20K, DEEP, NF1),/* LPC_AD1 */
268  PAD_CFG_NF(LPC_AD2, UP_20K, DEEP, NF1),/* LPC_AD2 */
269  PAD_CFG_NF(LPC_AD3, UP_20K, DEEP, NF1),/* LPC_AD3 */
270  PAD_CFG_NF(LPC_CLKRUNB, UP_20K, DEEP, NF1),/* LPC_CLKRUNB */
271  PAD_CFG_NF(LPC_FRAMEB, UP_20K, DEEP, NF1),/* LPC_FRAMEB */
272 };
273 
274 const struct pad_config *gpio_table(size_t *num)
275 {
277  return gpio_table_config;
278 }
279 
280 /* GPIOs needed prior to ramstage. */
281 static const struct pad_config early_gpio_table_config[] = {
282  PAD_CFG_NF(GPIO_46, UP_20K, DEEP, NF1), /* LPSS_UART2_RXD */
283  PAD_CFG_NF(GPIO_47, UP_20K, DEEP, NF1), /* LPSS_UART2_TXD */
284 
285  PAD_CFG_NF(GPIO_134, UP_20K, DEEP, NF2), /* ISH_I2C0_SDA/IO-OD */
286  PAD_CFG_NF(GPIO_135, UP_20K, DEEP, NF2), /* ISH_I2C0_SCL/IO-OD */
287  PAD_CFG_NF(GPIO_136, UP_20K, DEEP, NF2), /* ISH_I2C1_SDA/IO-OD */
288  PAD_CFG_NF(GPIO_137, UP_20K, DEEP, NF2), /* ISH_I2C1_SCL/IO-OD */
289 
290  PAD_CFG_NF(GPIO_0, DN_20K, DEEP, NF1),
291  PAD_CFG_NF(GPIO_1, DN_20K, DEEP, NF1),
292  PAD_CFG_NF(GPIO_2, DN_20K, DEEP, NF1),
293  PAD_CFG_NF(GPIO_3, DN_20K, DEEP, NF1),
294  PAD_CFG_NF(GPIO_4, DN_20K, DEEP, NF1),
295  PAD_CFG_NF(GPIO_5, DN_20K, DEEP, NF1),
296  PAD_CFG_NF(GPIO_6, DN_20K, DEEP, NF1),
297  PAD_CFG_NF(GPIO_7, DN_20K, DEEP, NF1),
298  PAD_CFG_NF(GPIO_8, DN_20K, DEEP, NF1),
299 
300  /* EXP_I2C_SDA and I2C_PSS_SDA and I2C_2_SDA_IOEXP */
301  PAD_CFG_NF(GPIO_7, UP_1K, DEEP, NF1),
302  /* EXP_I2C_SCL and I2C_PSS_SCL and I2C_2_SCL_IOEXP */
303  PAD_CFG_NF(GPIO_8, UP_1K, DEEP, NF1),
304 
305  PAD_CFG_GPO(GPIO_152, 0, DEEP), /* PERST# */
306  PAD_CFG_GPO(GPIO_19, 1, DEEP), /* PFET */
307  PAD_CFG_GPO(GPIO_13, 0, DEEP), /* PERST# */
308  PAD_CFG_GPO(GPIO_17, 1, DEEP), /* PFET */
309  PAD_CFG_GPO(GPIO_15, 0, DEEP), /* PERST# */
310 
311  PAD_CFG_NF(GPIO_210, DN_20K, DEEP, NF1), /* CLKREQ# */
312 
313  PAD_CFG_NF(SMB_CLK, UP_20K, DEEP, NF1),
314  PAD_CFG_NF(SMB_DATA, UP_20K, DEEP, NF1),
315  PAD_CFG_NF(LPC_ILB_SERIRQ, UP_20K, DEEP, NF1),
316  PAD_CFG_NF(LPC_CLKOUT0, NONE, DEEP, NF1),
317  PAD_CFG_NF(LPC_CLKOUT1, NONE, DEEP, NF1),
318  PAD_CFG_NF(LPC_AD0, UP_20K, DEEP, NF1),
319  PAD_CFG_NF(LPC_AD1, UP_20K, DEEP, NF1),
320  PAD_CFG_NF(LPC_AD2, UP_20K, DEEP, NF1),
321  PAD_CFG_NF(LPC_AD3, UP_20K, DEEP, NF1),
322  PAD_CFG_NF(LPC_CLKRUNB, UP_20K, DEEP, NF1),
323  PAD_CFG_NF(LPC_FRAMEB, UP_20K, DEEP, NF1),
324 };
325 
326 const struct pad_config *early_gpio_table(size_t *num)
327 {
330 }
331 
332 /* GPIO settings before entering sleep. */
333 static const struct pad_config sleep_gpio_table_config[] = {
334 };
335 
336 const struct pad_config *sleep_gpio_table(size_t *num)
337 {
340 }
#define GPIO_10
Definition: gpio_ftns.h:12
#define GPIO_191
Definition: gpio_ftns.h:21
#define GPIO_18
Definition: gpio_ftns.h:17
#define GPIO_17
Definition: gpio_ftns.h:16
#define GPIO_16
Definition: gpio_ftns.h:15
#define GPIO_189
Definition: gpio_ftns.h:19
#define GPIO_11
Definition: gpio_ftns.h:13
#define GPIO_190
Definition: gpio_ftns.h:20
#define GPIO_187
Definition: gpio_ftns.h:18
#define GPIO_15
Definition: gpio_ftns.h:14
#define GPIO_49
Definition: gpio_ftns.h:17
#define GPIO_66
Definition: gpio_ftns.h:25
#define GPIO_64
Definition: gpio_ftns.h:24
#define GPIO_71
Definition: gpio_ftns.h:27
#define GPIO_22
Definition: gpio_ftns.h:14
#define GPIO_32
Definition: gpio_ftns.h:15
#define GPIO_68
Definition: gpio_ftns.h:26
#define GPIO_33
Definition: gpio_ftns.h:16
#define ARRAY_SIZE(a)
Definition: helpers.h:12
#define GPIO_195
Definition: gpio_apl.h:153
#define PMU_SLP_S3_B
Definition: gpio_apl.h:265
#define GPIO_82
Definition: gpio_apl.h:187
#define GPIO_37
Definition: gpio_apl.h:102
#define GPIO_202
Definition: gpio_apl.h:160
#define PMU_SUSCLK
Definition: gpio_apl.h:267
#define PROCHOT_B
Definition: gpio_apl.h:176
#define GPIO_34
Definition: gpio_apl.h:99
#define SVID0_CLK
Definition: gpio_apl.h:142
#define TRST_B
Definition: gpio_apl.h:128
#define PMC_SPI_RXD
Definition: gpio_apl.h:166
#define CNV_RGI_RSP
Definition: gpio_apl.h:139
#define GPIO_214
Definition: gpio_apl.h:172
#define GPIO_178
Definition: gpio_apl.h:300
#define LPC_AD2
Definition: gpio_apl.h:312
#define PMU_PWRBTN_B
Definition: gpio_apl.h:262
#define GPIO_183
Definition: gpio_apl.h:303
#define GPIO_161
Definition: gpio_apl.h:282
#define PMIC_RESET_B
Definition: gpio_apl.h:170
#define FST_SPI_CLK_FB
Definition: gpio_apl.h:205
#define PMU_WAKE_B
Definition: gpio_apl.h:268
#define PMU_PLTRST_B
Definition: gpio_apl.h:261
#define GPIO_152
Definition: gpio_apl.h:246
#define TDI
Definition: gpio_apl.h:130
#define GPIO_48
Definition: gpio_apl.h:113
#define GPIO_213
Definition: gpio_apl.h:171
#define GPIO_169
Definition: gpio_apl.h:290
#define GPIO_201
Definition: gpio_apl.h:159
#define GPIO_210
Definition: gpio_apl.h:251
#define PMC_SPI_CLK
Definition: gpio_apl.h:168
#define LPC_AD0
Definition: gpio_apl.h:310
#define GPIO_127
Definition: gpio_apl.h:227
#define GPIO_207
Definition: gpio_apl.h:275
#define PMIC_I2C_SCL
Definition: gpio_apl.h:177
#define GPIO_165
Definition: gpio_apl.h:286
#define PMC_SPI_FS0
Definition: gpio_apl.h:163
#define GPIO_41
Definition: gpio_apl.h:106
#define GPIO_173
Definition: gpio_apl.h:295
#define OSC_CLK_OUT_1
Definition: gpio_apl.h:255
#define TCK
Definition: gpio_apl.h:127
#define GPIO_197
Definition: gpio_apl.h:155
#define GPIO_175
Definition: gpio_apl.h:297
#define GPIO_206
Definition: gpio_apl.h:274
#define GPIO_209
Definition: gpio_apl.h:250
#define GPIO_83
Definition: gpio_apl.h:188
#define PMU_BATLOW_B
Definition: gpio_apl.h:260
#define GPIO_198
Definition: gpio_apl.h:156
#define SMB_ALERTB
Definition: gpio_apl.h:304
#define GPIO_208
Definition: gpio_apl.h:276
#define GPIO_203
Definition: gpio_apl.h:161
#define GPIO_164
Definition: gpio_apl.h:285
#define PMIC_THERMTRIP_B
Definition: gpio_apl.h:174
#define CNV_BRI_RSP
Definition: gpio_apl.h:137
#define GPIO_151
Definition: gpio_apl.h:245
#define GPIO_168
Definition: gpio_apl.h:289
#define GPIO_111
Definition: gpio_apl.h:211
#define OSC_CLK_OUT_0
Definition: gpio_apl.h:254
#define GPIO_46
Definition: gpio_apl.h:111
#define GPIO_44
Definition: gpio_apl.h:109
#define PMU_RESETBUTTON_B
Definition: gpio_apl.h:263
#define GPIO_199
Definition: gpio_apl.h:157
#define SVID0_DATA
Definition: gpio_apl.h:141
#define TMS
Definition: gpio_apl.h:129
#define GPIO_159
Definition: gpio_apl.h:280
#define GPIO_43
Definition: gpio_apl.h:108
#define GPIO_128
Definition: gpio_apl.h:228
#define GPIO_158
Definition: gpio_apl.h:279
#define GPIO_182
Definition: gpio_apl.h:302
#define GPIO_110
Definition: gpio_apl.h:210
#define SUSPWRDNACK
Definition: gpio_apl.h:270
#define GPIO_174
Definition: gpio_apl.h:296
#define LPC_AD1
Definition: gpio_apl.h:311
#define GPIO_167
Definition: gpio_apl.h:288
#define GPIO_45
Definition: gpio_apl.h:110
#define GPIO_186
Definition: gpio_apl.h:301
#define GPIO_125
Definition: gpio_apl.h:225
#define PMIC_PWRGOOD
Definition: gpio_apl.h:169
#define SVID0_ALERT_B
Definition: gpio_apl.h:140
#define GPIO_47
Definition: gpio_apl.h:112
#define LPC_CLKOUT1
Definition: gpio_apl.h:309
#define GPIO_123
Definition: gpio_apl.h:221
#define GPIO_171
Definition: gpio_apl.h:292
#define GPIO_166
Definition: gpio_apl.h:287
#define SMB_DATA
Definition: gpio_apl.h:306
#define PMU_SLP_S4_B
Definition: gpio_apl.h:266
#define GPIO_194
Definition: gpio_apl.h:152
#define PMIC_I2C_SDA
Definition: gpio_apl.h:178
#define GPIO_62
Definition: gpio_apl.h:115
#define GPIO_73
Definition: gpio_apl.h:126
#define GPIO_177
Definition: gpio_apl.h:299
#define PMC_SPI_FS2
Definition: gpio_apl.h:165
#define SMB_CLK
Definition: gpio_apl.h:305
#define GPIO_172
Definition: gpio_apl.h:293
#define LPC_AD3
Definition: gpio_apl.h:313
#define GPIO_193
Definition: gpio_apl.h:151
#define GPIO_204
Definition: gpio_apl.h:162
#define GPIO_211
Definition: gpio_apl.h:252
#define GPIO_200
Definition: gpio_apl.h:158
#define GPIO_150
Definition: gpio_apl.h:244
#define SUS_STAT_B
Definition: gpio_apl.h:269
#define TDO
Definition: gpio_apl.h:135
#define OSC_CLK_OUT_3
Definition: gpio_apl.h:257
#define JTAGX
Definition: gpio_apl.h:133
#define GPIO_63
Definition: gpio_apl.h:116
#define GPIO_149
Definition: gpio_apl.h:243
#define GPIO_205
Definition: gpio_apl.h:273
#define PMU_SLP_S0_B
Definition: gpio_apl.h:264
#define GPIO_196
Definition: gpio_apl.h:154
#define GPIO_162
Definition: gpio_apl.h:283
#define GPIO_163
Definition: gpio_apl.h:284
#define CNV_RGI_DT
Definition: gpio_apl.h:138
#define GPIO_160
Definition: gpio_apl.h:281
#define GPIO_215
Definition: gpio_apl.h:173
#define PMC_SPI_TXD
Definition: gpio_apl.h:167
#define GPIO_188
Definition: gpio_apl.h:146
#define GPIO_192
Definition: gpio_apl.h:150
#define PMC_SPI_FS1
Definition: gpio_apl.h:164
#define GPIO_212
Definition: gpio_apl.h:253
#define PMU_AC_PRESENT
Definition: gpio_apl.h:259
#define LPC_CLKRUNB
Definition: gpio_apl.h:314
#define LPC_FRAMEB
Definition: gpio_apl.h:315
#define LPC_ILB_SERIRQ
Definition: gpio_apl.h:307
#define OSC_CLK_OUT_4
Definition: gpio_apl.h:258
#define GPIO_112
Definition: gpio_apl.h:212
#define GPIO_170
Definition: gpio_apl.h:291
#define CX_PRDY_B
Definition: gpio_apl.h:134
#define GPIO_176
Definition: gpio_apl.h:298
#define GPIO_36
Definition: gpio_apl.h:101
#define GPIO_35
Definition: gpio_apl.h:100
#define CNV_BRI_DT
Definition: gpio_apl.h:136
#define CX_PMODE
Definition: gpio_apl.h:131
#define GPIO_28
Definition: gpio_apl.h:93
#define CX_PREQ_B
Definition: gpio_apl.h:132
#define LPC_CLKOUT0
Definition: gpio_apl.h:308
#define PMIC_STDBY
Definition: gpio_apl.h:175
#define GPIO_179
Definition: gpio_apl.h:294
#define GPIO_124
Definition: gpio_apl.h:224
#define OSC_CLK_OUT_2
Definition: gpio_apl.h:256
static const struct pad_config early_gpio_table_config[]
Definition: gpio.c:281
static const struct pad_config gpio_table_config[]
Definition: gpio.c:8
static const struct pad_config sleep_gpio_table_config[]
Definition: gpio.c:333
const struct pad_config * sleep_gpio_table(size_t *num)
Definition: gpio.c:336
const struct pad_config early_gpio_table[]
Definition: gpio.c:373
const struct pad_config gpio_table[]
Definition: gpio.c:33
#define GPIO_91
Definition: gpio.h:67
#define GPIO_30
Definition: gpio.h:46
#define GPIO_121
Definition: gpio.h:80
#define GPIO_76
Definition: gpio.h:59
#define GPIO_27
Definition: gpio.h:44
#define GPIO_0
Definition: gpio.h:21
#define GPIO_7
Definition: gpio.h:28
#define GPIO_90
Definition: gpio.h:66
#define GPIO_89
Definition: gpio.h:65
#define GPIO_69
Definition: gpio.h:55
#define GPIO_12
Definition: gpio.h:33
#define GPIO_1
Definition: gpio.h:22
#define GPIO_5
Definition: gpio.h:26
#define GPIO_113
Definition: gpio.h:75
#define GPIO_104
Definition: gpio.h:69
#define GPIO_130
Definition: gpio.h:84
#define GPIO_88
Definition: gpio.h:64
#define GPIO_84
Definition: gpio.h:60
#define GPIO_105
Definition: gpio.h:70
#define GPIO_8
Definition: gpio.h:29
#define GPIO_67
Definition: gpio.h:53
#define GPIO_24
Definition: gpio.h:42
#define GPIO_132
Definition: gpio.h:86
#define GPIO_147
Definition: gpio.h:94
#define GPIO_4
Definition: gpio.h:25
#define GPIO_129
Definition: gpio.h:83
#define GPIO_148
Definition: gpio.h:95
#define GPIO_20
Definition: gpio.h:38
#define GPIO_92
Definition: gpio.h:68
#define GPIO_19
Definition: gpio.h:37
#define GPIO_70
Definition: gpio.h:56
#define GPIO_116
Definition: gpio.h:78
#define GPIO_109
Definition: gpio.h:74
#define GPIO_31
Definition: gpio.h:47
#define GPIO_9
Definition: gpio.h:30
#define GPIO_26
Definition: gpio.h:43
#define GPIO_131
Definition: gpio.h:85
#define GPIO_29
Definition: gpio.h:45
#define GPIO_75
Definition: gpio.h:58
#define GPIO_86
Definition: gpio.h:62
#define GPIO_87
Definition: gpio.h:63
#define GPIO_3
Definition: gpio.h:24
#define GPIO_146
Definition: gpio.h:93
#define GPIO_120
Definition: gpio.h:79
#define GPIO_106
Definition: gpio.h:71
#define GPIO_85
Definition: gpio.h:61
#define GPIO_2
Definition: gpio.h:23
#define GPIO_21
Definition: gpio.h:39
#define GPIO_40
Definition: gpio.h:49
#define GPIO_42
Definition: gpio.h:50
#define GPIO_23
Definition: gpio.h:41
#define GPIO_74
Definition: gpio.h:57
#define GPIO_6
Definition: gpio.h:27
#define GPIO_139
Definition: gpio.h:94
#define GPIO_14
Definition: gpio.h:35
#define GPIO_136
Definition: gpio.h:91
#define GPIO_137
Definition: gpio.h:92
#define GPIO_138
Definition: gpio.h:93
#define GPIO_103
Definition: gpio.h:71
#define GPIO_13
Definition: gpio.h:34
#define GPIO_135
Definition: gpio.h:90
#define GPIO_153
Definition: gpio.h:103
#define GPIO_156
Definition: gpio.h:106
#define GPIO_79
Definition: gpio.h:66
#define GPIO_81
Definition: gpio.h:68
#define GPIO_77
Definition: gpio.h:64
#define GPIO_39
Definition: gpio.h:52
#define GPIO_155
Definition: gpio.h:105
#define GPIO_157
Definition: gpio.h:107
#define GPIO_80
Definition: gpio.h:67
#define GPIO_154
Definition: gpio.h:104
#define GPIO_38
Definition: gpio.h:51
#define GPIO_78
Definition: gpio.h:65
#define GPIO_72
Definition: gpio.h:58
#define GPIO_133
Definition: gpio.h:97
#define GPIO_99
Definition: gpio.h:76
#define GPIO_25
Definition: gpio.h:43
#define GPIO_117
Definition: gpio.h:84
#define GPIO_126
Definition: gpio.h:90
#define GPIO_98
Definition: gpio.h:75
#define GPIO_102
Definition: gpio.h:79
#define GPIO_122
Definition: gpio.h:89
#define GPIO_134
Definition: gpio.h:98
#define GPIO_97
Definition: gpio.h:74
#define GPIO_65
Definition: gpio.h:51
#define GPIO_100
Definition: gpio.h:77
#define GPIO_119
Definition: gpio.h:86
#define GPIO_118
Definition: gpio.h:85
#define GPIO_101
Definition: gpio.h:78
#define PAD_CFG_GPI(pad, pull, rst)
Definition: gpio_defs.h:284
#define PAD_CFG_NF(pad, pull, rst, func)
Definition: gpio_defs.h:197
#define PAD_CFG_GPO(pad, val, rst)
Definition: gpio_defs.h:247