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 <commonlib/helpers.h>
4 #include <baseboard/variants.h>
5 
6 /*
7  * Pad configuration in ramstage. The order largely follows the 'GPIO Muxing'
8  * table found in EDS vol 1, but some pins aren't grouped functionally in
9  * the table so those were moved for more logical grouping.
10  */
11 static const struct pad_config gpio_table[] = {
12 
13  /* Southwest Community */
14 
15  /* PCIE_WAKE[0:3]_N */
16  PAD_CFG_NF(GPIO_205, NONE, DEEP, NF1), /* PCIE_WAKE0_N */
17  PAD_CFG_NF(GPIO_206, NONE, DEEP, NF1), /* PCIE_WAKE1_N */
18  PAD_CFG_NF(GPIO_207, NONE, DEEP, NF1), /* PCIE_WAKE2_N */
19  PAD_CFG_NF(GPIO_208, NONE, DEEP, NF1), /* PCIE_WAKE3_N */
20 
21  /* EMMC interface. */
22  PAD_CFG_NF(GPIO_156, DN_20K, DEEP, NF1), /* EMMC_CLK */
23  PAD_CFG_NF(GPIO_157, NONE, DEEP, NF1), /* EMMC_D0 */
24  PAD_CFG_NF(GPIO_158, NONE, DEEP, NF1), /* EMMC_D1 */
25  PAD_CFG_NF(GPIO_159, NONE, DEEP, NF1), /* EMMC_D2 */
26  PAD_CFG_NF(GPIO_160, NONE, DEEP, NF1), /* EMMC_D3 */
27  PAD_CFG_NF(GPIO_161, NONE, DEEP, NF1), /* EMMC_D4 */
28  PAD_CFG_NF(GPIO_162, NONE, DEEP, NF1), /* EMMC_D5 */
29  PAD_CFG_NF(GPIO_163, NONE, DEEP, NF1), /* EMMC_D6 */
30  PAD_CFG_NF(GPIO_164, NONE, DEEP, NF1), /* EMMC_D7 */
31  PAD_CFG_NF(GPIO_165, NONE, DEEP, NF1), /* EMMC_CMD */
32  PAD_CFG_NF(GPIO_182, DN_20K, DEEP, NF1), /* EMMC_RCLK */
33 
34  /* SDIO -- unused */
35  PAD_CFG_GPI(GPIO_166, DN_20K, DEEP), /* SDIO_CLK */
36  PAD_CFG_GPI(GPIO_167, NONE, DEEP), /* SDIO_D0 */
37  /* Configure SDIO to enable power gating. */
38  PAD_CFG_NF(GPIO_168, UP_20K, DEEP, NF1), /* SDIO_D1 */
39  PAD_CFG_GPI(GPIO_169, NONE, DEEP), /* SDIO_D2 */
40  PAD_CFG_GPI(GPIO_170, NONE, DEEP), /* SDIO_D3 */
41  PAD_CFG_GPI(GPIO_171, NONE, DEEP), /* SDIO_CMD */
42 
43  /* SDCARD */
44  /* Pull down clock by 20K. */
45  PAD_CFG_NF(GPIO_172, DN_20K, DEEP, NF1), /* SDCARD_CLK */
46  PAD_CFG_NF(GPIO_173, UP_20K, DEEP, NF1), /* SDCARD_D0 */
47  PAD_CFG_NF(GPIO_174, UP_20K, DEEP, NF1), /* SDCARD_D1 */
48  PAD_CFG_NF(GPIO_175, UP_20K, DEEP, NF1), /* SDCARD_D2 */
49  PAD_CFG_NF(GPIO_176, UP_20K, DEEP, NF1), /* SDCARD_D3 */
50  /* Card detect is active LOW with external pull up. */
51  PAD_CFG_NF(GPIO_177, NONE, DEEP, NF1), /* SDCARD_CD_N */
52  PAD_CFG_NF(GPIO_178, UP_20K, DEEP, NF1), /* SDCARD_CMD */
53  /* CLK feedback, internal signal, needs 20K pull down. */
54  PAD_CFG_NF(GPIO_179, DN_20K, DEEP, NF1), /* SDCARD_CLK_FB */
55  PAD_CFG_GPI(GPIO_186, NONE, DEEP), /* SDCARD_LVL_WP */
56  /* EN_SD_SOCKET_PWR_L for SD slot power control. Default on. */
57  PAD_CFG_GPO(GPIO_183, 1, DEEP), /* SDIO_PWR_DOWN_N */
58 
59  /* SMBus */
60  PAD_CFG_GPI(SMB_ALERTB, NONE, DEEP), /* SMB_ALERT _N */
61  PAD_CFG_NF(SMB_CLK, NONE, DEEP, NF1), /* SMB_CLK */
62  PAD_CFG_NF(SMB_DATA, NONE, DEEP, NF1), /* SMB_DATA */
63 
64  /* LPC */
65  PAD_CFG_NF(LPC_ILB_SERIRQ, NONE, DEEP, NF1), /* LPC_SERIRQ */
66  PAD_CFG_NF(LPC_CLKOUT0, NONE, DEEP, NF1), /* LPC_CLKOUT0 */
67  PAD_CFG_GPI(LPC_CLKOUT1, UP_20K, DEEP), /* LPC_CLKOUT1 */
68  PAD_CFG_NF(LPC_AD0, NONE, DEEP, NF1), /* LPC_AD0 */
69  PAD_CFG_NF(LPC_AD1, NONE, DEEP, NF1), /* LPC_AD1 */
70  PAD_CFG_NF(LPC_AD2, NONE, DEEP, NF1), /* LPC_AD2 */
71  PAD_CFG_NF(LPC_AD3, NONE, DEEP, NF1), /* LPC_AD3 */
72  PAD_CFG_NF(LPC_CLKRUNB, NONE, DEEP, NF1), /* LPC_CLKRUN_N */
73  PAD_CFG_NF(LPC_FRAMEB, NONE, DEEP, NF1), /* LPC_FRAME_N */
74 
75  /* West Community */
76 
77  /* I2C0 - I2C Level Shifter */
78  PAD_CFG_NF(GPIO_124, NONE, DEEP, NF1), /* LPSS_I2C0_SDA */
79  PAD_CFG_NF(GPIO_125, NONE, DEEP, NF1), /* LPSS_I2C0_SCL */
80 
81  /* I2C[1:7] -- unused */
82  PAD_CFG_GPI(GPIO_126, UP_20K, DEEP), /* LPSS_I2C1_SDA */
83  PAD_CFG_GPI(GPIO_127, UP_20K, DEEP), /* LPSS_I2C1_SCL */
84  PAD_CFG_GPI(GPIO_128, UP_20K, DEEP), /* LPSS_I2C2_SDA */
85  PAD_CFG_GPI(GPIO_129, UP_20K, DEEP), /* LPSS_I2C2_SCL */
86  PAD_CFG_GPI(GPIO_130, UP_20K, DEEP), /* LPSS_I2C3_SDA */
87  PAD_CFG_GPI(GPIO_131, UP_20K, DEEP), /* LPSS_I2C3_SCL */
88  PAD_CFG_GPI(GPIO_132, UP_20K, DEEP), /* LPSS_I2C4_SDA */
89  PAD_CFG_GPI(GPIO_133, UP_20K, DEEP), /* LPSS_I2C4_SCL */
90  PAD_CFG_GPI(GPIO_134, UP_20K, DEEP), /* LPSS_I2C5_SDA */
91  PAD_CFG_GPI(GPIO_135, UP_20K, DEEP), /* LPSS_I2C5_SCL */
92  PAD_CFG_GPI(GPIO_136, UP_20K, DEEP), /* LPSS_I2C6_SDA */
93  PAD_CFG_GPI(GPIO_137, UP_20K, DEEP), /* LPSS_I2C6_SCL */
94  PAD_CFG_GPI(GPIO_138, UP_20K, DEEP), /* LPSS_I2C7_SDA */
95  PAD_CFG_GPI(GPIO_139, UP_20K, DEEP), /* LPSS_I2C7_SCL */
96 
97  /* ISH_GPIO_[0:9] -- unused */
98  PAD_CFG_GPI(GPIO_146, DN_20K, DEEP), /* ISH_GPIO_0 */
99  PAD_CFG_GPI(GPIO_147, DN_20K, DEEP), /* ISH_GPIO_1 */
100  PAD_CFG_GPI(GPIO_148, DN_20K, DEEP), /* ISH_GPIO_2 */
101  PAD_CFG_GPI(GPIO_149, DN_20K, DEEP), /* ISH_GPIO_3 */
102  PAD_CFG_GPI(GPIO_150, DN_20K, DEEP), /* ISH_GPIO_4 */
103  PAD_CFG_GPI(GPIO_151, DN_20K, DEEP), /* ISH_GPIO_5 */
104  PAD_CFG_GPI(GPIO_152, DN_20K, DEEP), /* ISH_GPIO_6 */
105  PAD_CFG_GPI(GPIO_153, DN_20K, DEEP), /* ISH_GPIO_7 */
106  PAD_CFG_GPI(GPIO_154, DN_20K, DEEP), /* ISH_GPIO_8 */
107  PAD_CFG_GPI(GPIO_155, DN_20K, DEEP), /* ISH_GPIO_9 */
108 
109  /* PCIE_CLKREQ[0:3]_N */
110  PAD_CFG_NF(GPIO_209, NONE, DEEP, NF1),
111  PAD_CFG_NF(GPIO_210, NONE, DEEP, NF1),
112  PAD_CFG_NF(GPIO_211, NONE, DEEP, NF1),
113  PAD_CFG_NF(GPIO_212, NONE, DEEP, NF1),
114 
115  /* OSC_CLK_OUT_0 - RES_CLK_CPU_FPGA */
116  PAD_CFG_NF(OSC_CLK_OUT_0, DN_20K, DEEP, NF1),
117  /* OSC_CLK_OUT_[1:4] -- unused */
118  PAD_CFG_GPI(OSC_CLK_OUT_1, DN_20K, DEEP),
119  PAD_CFG_GPI(OSC_CLK_OUT_2, DN_20K, DEEP),
120  PAD_CFG_GPI(OSC_CLK_OUT_3, DN_20K, DEEP),
121  PAD_CFG_GPI(OSC_CLK_OUT_4, DN_20K, DEEP),
122 
123  /* PMU Signals */
124  PAD_CFG_GPI(PMU_AC_PRESENT, DN_20K, DEEP), /* PMU_AC_PRESENT */
125  PAD_CFG_NF(PMU_BATLOW_B, UP_20K, DEEP, NF1), /* PMU_BATLOW_N */
126  PAD_CFG_NF(PMU_PLTRST_B, NONE, DEEP, NF1), /* PMU_PLTRST_N */
127  PAD_CFG_NF(PMU_PWRBTN_B, NONE, DEEP, NF1), /* PMU_PWRBTN_N */
128  PAD_CFG_NF(PMU_RESETBUTTON_B, NONE, DEEP, NF1), /* PMU_RSTBTN_N */
129  /* PMU_SLP_S0_N */
130  PAD_CFG_NF_IOSSTATE(PMU_SLP_S0_B, NONE, DEEP, NF1, IGNORE),
131  PAD_CFG_NF(PMU_SLP_S3_B, NONE, DEEP, NF1), /* PMU_SLP_S3_N */
132  PAD_CFG_NF(PMU_SLP_S4_B, NONE, DEEP, NF1), /* PMU_SLP_S4_N */
133  PAD_CFG_NF(PMU_SUSCLK, NONE, DEEP, NF1), /* PMU_SUSCLK */
134  PAD_CFG_GPO(PMU_WAKE_B, 1, DEEP), /* EN_PP3300_EMMC */
135  PAD_CFG_NF(SUS_STAT_B, NONE, DEEP, NF1), /* SUS_STAT_N */
136  PAD_CFG_NF(SUSPWRDNACK, NONE, DEEP, NF1), /* SUSPWRDNACK */
137 
138  /* Northwest Community */
139 
140  /* DDI0 SDA and SCL -- unused */
141  PAD_CFG_GPI(GPIO_187, DN_20K, DEEP), /* HV_DDI0_DDC_SDA */
142  PAD_CFG_GPI(GPIO_188, DN_20K, DEEP), /* HV_DDI0_DDC_SCL */
143  /* DDI1 SDA and SCL - Display-Port */
144  PAD_CFG_NF(GPIO_189, NONE, DEEP, NF1), /* HV_DDI1_DDC_SDA */
145  PAD_CFG_NF(GPIO_190, NONE, DEEP, NF1), /* HV_DDI1_DDC_SCL */
146 
147  /* MIPI I2C -- unused */
148  PAD_CFG_GPI(GPIO_191, DN_20K, DEEP), /* MIPI_I2C_SDA */
149  PAD_CFG_GPI(GPIO_192, DN_20K, DEEP), /* MIPI_I2C_SCL */
150 
151  /* Panel 0 control -- unused */
152  PAD_CFG_TERM_GPO(GPIO_193, 0, DN_20K, DEEP), /* PNL0_VDDEN */
153  PAD_CFG_TERM_GPO(GPIO_194, 0, DN_20K, DEEP), /* PNL0_BKLTEN */
154  PAD_CFG_TERM_GPO(GPIO_195, 0, DN_20K, DEEP), /* PNL0_BKLTCTL */
155 
156  /* Panel 1 control -- unused */
157  PAD_CFG_GPI(GPIO_196, DN_20K, DEEP), /* PNL1_VDDEN */
158  PAD_CFG_GPI(GPIO_197, DN_20K, DEEP), /* PNL1_BKLTEN */
159  PAD_CFG_GPI(GPIO_198, DN_20K, DEEP), /* PNL1_BKLTCTL */
160 
161  /* DDI[0:1]_HPD -- unused */
162  PAD_CFG_GPI(GPIO_199, NONE, DEEP), /* XHPD_DP */
163  PAD_CFG_GPI(GPIO_200, DN_20K, DEEP), /* unused */
164 
165  /* MDSI signals -- unused */
166  PAD_CFG_GPI(GPIO_201, DN_20K, DEEP), /* MDSI_A_TE */
167  PAD_CFG_GPI(GPIO_202, DN_20K, DEEP), /* MDSI_C_TE */
168 
169  /* USB overcurrent pins. */
170  PAD_CFG_NF(GPIO_203, NONE, DEEP, NF1), /* USB_OC0_N */
171  PAD_CFG_NF(GPIO_204, NONE, DEEP, NF1), /* USB_OC1_N */
172 
173  /* PMC SPI -- almost entirely unused. */
174  PAD_CFG_GPI(PMC_SPI_FS0, UP_20K, DEEP),
175  PAD_CFG_NF(PMC_SPI_FS1, NONE, DEEP, NF2), /* XHPD_EDP_APL */
176  PAD_CFG_GPI(PMC_SPI_FS2, UP_20K, DEEP),
177  PAD_CFG_GPI(PMC_SPI_RXD, DN_20K, DEEP),
178  PAD_CFG_GPI(PMC_SPI_TXD, DN_20K, DEEP),
179  PAD_CFG_GPI(PMC_SPI_CLK, DN_20K, DEEP),
180 
181  /* PMIC Signals unused signals related to an old PMIC interface. */
182  PAD_CFG_NF(PMIC_PWRGOOD, UP_20K, DEEP, NF1), /* PMIC_PWRGOOD */
183  PAD_CFG_GPI(PMIC_RESET_B, DN_20K, DEEP), /* PMIC_RESET_B */
184  PAD_CFG_TERM_GPO(GPIO_213, 0, DN_20K, DEEP), /* NFC_OUT_RESERVE */
185  PAD_CFG_TERM_GPO(GPIO_214, 0, DN_20K, DEEP), /* NFC_EN */
186  PAD_CFG_GPI(GPIO_215, DN_20K, DEEP), /* NFC_IN_RESERVE */
187  /* THERMTRIP_N */
188  PAD_CFG_NF(PMIC_THERMTRIP_B, UP_20K, DEEP, NF1),
189  /* Disable reset for PCIe switch. */
190  PAD_CFG_GPO(PMIC_STDBY, 1, DEEP),
191  PAD_CFG_NF(PROCHOT_B, NONE, DEEP, NF1), /* PROCHOT_N */
192  PAD_CFG_NF(PMIC_I2C_SCL, NONE, DEEP, NF1), /* PMIC_I2C_SCL */
193  PAD_CFG_NF(PMIC_I2C_SDA, NONE, DEEP, NF1), /* PMIC_I2C_SDA */
194 
195  /* I2S1 -- unused */
196  PAD_CFG_GPI(GPIO_74, DN_20K, DEEP), /* I2S1_MCLK */
197  PAD_CFG_GPI(GPIO_75, DN_20K, DEEP), /* I2S1_BCLK */
198  PAD_CFG_GPI(GPIO_76, DN_20K, DEEP), /* I2S1_WS_SYNC */
199  PAD_CFG_GPI(GPIO_77, DN_20K, DEEP), /* I2S1_SDI */
200  PAD_CFG_GPI(GPIO_78, DN_20K, DEEP), /* I2S1_SDO */
201 
202  /* DMIC or I2S4 -- unused */
203  PAD_CFG_GPI(GPIO_79, DN_20K, DEEP), /* AVS_M_CLK_A1 */
204  PAD_CFG_GPI(GPIO_80, DN_20K, DEEP), /* AVS_M_CLK_B1 */
205  PAD_CFG_GPI(GPIO_81, DN_20K, DEEP), /* AVS_M_DATA_1 */
206  PAD_CFG_GPI(GPIO_82, DN_20K, DEEP), /* AVS_M_CLK_AB2 */
207  PAD_CFG_GPI(GPIO_83, DN_20K, DEEP), /* AVS_M_DATA_2 */
208 
209  /* I2S2 -- unused */
210  PAD_CFG_GPI(GPIO_84, DN_20K, DEEP), /* AVS_I2S2_MCLK */
211  PAD_CFG_GPI(GPIO_85, DN_20K, DEEP), /* AVS_I2S2_BCLK */
212  PAD_CFG_GPI(GPIO_86, DN_20K, DEEP), /* AVS_I2S2_WS_SYNC */
213  PAD_CFG_GPI(GPIO_87, DN_20K, DEEP), /* AVS_I2S2_SDI */
214  PAD_CFG_GPI(GPIO_88, DN_20K, DEEP), /* AVS_I2S2_SDO */
215 
216  /* I2S3 -- unused */
217  PAD_CFG_GPI(GPIO_89, DN_20K, DEEP), /* AVS_I2S3_BCLK */
218  PAD_CFG_GPI(GPIO_90, DN_20K, DEEP), /* AVS_I2S3_WS_SYNC */
219  PAD_CFG_GPI(GPIO_91, DN_20K, DEEP), /* AVS_I2S3_SDI */
220  PAD_CFG_GPI(GPIO_92, DN_20K, DEEP), /* AVS_I2S3_SDO */
221 
222  /* Fast SPI */
223  /* FST_SPI_CS0_B */
224  PAD_CFG_NF_IOSSTATE(GPIO_97, NATIVE, DEEP, NF1, IGNORE),
225  /* FST_SPI_CS1_B -- unused */
226  PAD_CFG_GPI(GPIO_98, DN_20K, DEEP),
227  /* FST_SPI_MOSI_IO0 */
228  PAD_CFG_NF_IOSSTATE(GPIO_99, NATIVE, DEEP, NF1, IGNORE),
229  /* FST_SPI_MISO_IO1 */
230  PAD_CFG_NF_IOSSTATE(GPIO_100, NATIVE, DEEP, NF1, IGNORE),
231  /* FST_IO2 -- MEM_CONFIG0 */
232  PAD_CFG_NF(GPIO_101, NATIVE, DEEP, NF1),
233  /* FST_IO3 -- MEM_CONFIG1 */
234  PAD_CFG_NF(GPIO_102, NATIVE, DEEP, NF1),
235  /* FST_SPI_CLK */
236  PAD_CFG_NF_IOSSTATE(GPIO_103, NATIVE, DEEP, NF1, IGNORE),
237  /* FST_SPI_CLK_FB */
238  PAD_CFG_NF_IOSSTATE(FST_SPI_CLK_FB, NATIVE, DEEP, NF1, IGNORE),
239 
240  /* SIO_SPI_0 -- unused */
241  PAD_CFG_GPI(GPIO_104, DN_20K, DEEP), /* GP_SSP_0_CLK */
242  PAD_CFG_GPI(GPIO_105, DN_20K, DEEP), /* GP_SSP_0_FS0 */
243  PAD_CFG_NF(GPIO_106, NATIVE, DEEP, NF3), /* FST_SPI_CS2_N */
244  PAD_CFG_GPI(GPIO_109, DN_20K, DEEP), /* GP_SSP_0_RXD */
245  PAD_CFG_GPI(GPIO_110, DN_20K, DEEP), /* GP_SSP_0_TXD */
246 
247  /* SIO_SPI_1 -- unused */
248  PAD_CFG_GPI(GPIO_111, DN_20K, DEEP), /* GP_SSP_1_CLK */
249  PAD_CFG_GPI(GPIO_112, DN_20K, DEEP), /* GP_SSP_1_FS0 */
250  PAD_CFG_GPI(GPIO_113, DN_20K, DEEP), /* GP_SSP_1_FS1 */
251  PAD_CFG_GPI(GPIO_116, DN_20K, DEEP), /* GP_SSP_1_RXD */
252  PAD_CFG_GPI(GPIO_117, DN_20K, DEEP), /* GP_SSP_1_TXD */
253 
254  /* SIO_SPI_2 -- unused */
255  PAD_CFG_GPI(GPIO_118, DN_20K, DEEP), /* GP_SSP_2_CLK */
256  PAD_CFG_GPI(GPIO_119, DN_20K, DEEP), /* GP_SSP_2_FS0 */
257  PAD_CFG_GPI(GPIO_120, DN_20K, DEEP), /* GP_SSP_2_FS1 */
258  PAD_CFG_GPI(GPIO_121, DN_20K, DEEP), /* GP_SSP_2_FS2 */
259  PAD_CFG_GPI(GPIO_122, DN_20K, DEEP), /* GP_SSP_2_RXD */
260  PAD_CFG_GPI(GPIO_123, NONE, DEEP), /* GP_SSP_2_TXD */
261 
262  /* North Community */
263 
264  /* Debug tracing. */
265  PAD_CFG_GPI(GPIO_0, DN_20K, DEEP), /* TRACE_0_CLK_VNN */
266  PAD_CFG_GPI(GPIO_1, DN_20K, DEEP), /* TRACE_0_DATA0_VNN */
267  PAD_CFG_GPI(GPIO_2, DN_20K, DEEP), /* TRACE_0_DATA1_VNN */
268  PAD_CFG_GPI(GPIO_3, DN_20K, DEEP), /* TRACE_0_DATA2_VNN */
269  PAD_CFG_GPI(GPIO_4, DN_20K, DEEP), /* TRACE_0_DATA3_VNN */
270  PAD_CFG_GPI(GPIO_5, DN_20K, DEEP), /* TRACE_0_DATA4_VNN */
271  PAD_CFG_GPI(GPIO_6, DN_20K, DEEP), /* TRACE_0_DATA5_VNN */
272  PAD_CFG_GPI(GPIO_7, DN_20K, DEEP), /* TRACE_0_DATA6_VNN */
273  PAD_CFG_GPI(GPIO_8, DN_20K, DEEP), /* TRACE_0_DATA7_VNN */
274 
275  PAD_CFG_GPI(GPIO_9, DN_20K, DEEP), /* TRACE_1_CLK_VNN */
276  PAD_CFG_GPI(GPIO_10, DN_20K, DEEP), /* TRACE_1_DATA0_VNN */
277  PAD_CFG_GPI(GPIO_11, DN_20K, DEEP), /* TRACE_1_DATA1_VNN */
278  PAD_CFG_GPI(GPIO_12, DN_20K, DEEP), /* TRACE_1_DATA2_VNN */
279  PAD_CFG_GPI(GPIO_13, DN_20K, DEEP), /* TRACE_1_DATA3_VNN */
280  PAD_CFG_GPI(GPIO_14, DN_20K, DEEP), /* TRACE_1_DATA4_VNN */
281  PAD_CFG_GPI(GPIO_15, DN_20K, DEEP), /* TRACE_1_DATA5_VNN */
282  PAD_CFG_GPI(GPIO_16, DN_20K, DEEP), /* TRACE_1_DATA6_VNN */
283  PAD_CFG_GPI(GPIO_17, DN_20K, DEEP), /* TRACE_1_DATA7_VNN */
284 
285  PAD_CFG_GPI(GPIO_18, DN_20K, DEEP), /* TRACE_2_CLK_VNN */
286  PAD_CFG_GPI(GPIO_19, DN_20K, DEEP), /* TRACE_2_DATA0_VNN */
287  PAD_CFG_GPI(GPIO_20, DN_20K, DEEP), /* TRACE_2_DATA1_VNN */
288  PAD_CFG_GPI(GPIO_21, DN_20K, DEEP), /* TRACE_2_DATA2_VNN */
289  PAD_CFG_GPI(GPIO_22, DN_20K, DEEP), /* TRACE_2_DATA3_VNN */
290  PAD_CFG_GPI(GPIO_23, DN_20K, DEEP), /* TRACE_2_DATA4_VNN */
291  PAD_CFG_GPI(GPIO_24, DN_20K, DEEP), /* TRACE_2_DATA5_VNN */
292  PAD_CFG_GPI(GPIO_25, DN_20K, DEEP), /* TRACE_2_DATA6_VNN */
293  PAD_CFG_GPI(GPIO_26, DN_20K, DEEP), /* TRACE_2_DATA7_VNN */
294 
295  PAD_CFG_GPI(GPIO_27, DN_20K, DEEP), /* TRIGOUT_0 */
296  PAD_CFG_GPI(GPIO_28, DN_20K, DEEP), /* TRIGOUT_1 */
297  PAD_CFG_GPI(GPIO_29, DN_20K, DEEP), /* TRIGIN_0 */
298 
299  PAD_CFG_GPI(GPIO_30, DN_20K, DEEP), /* ISH_GPIO_12 */
300  PAD_CFG_GPO(GPIO_31, 1, DEEP), /* ISH_GPIO_13 */
301  PAD_CFG_GPI(GPIO_32, NONE, DEEP), /* ISH_GPIO_14 */
302  PAD_CFG_GPI(GPIO_33, DN_20K, DEEP), /* ISH_GPIO_15 */
303 
304  /* PWM[0:3] -- unused */
305  PAD_CFG_GPI(GPIO_34, DN_20K, DEEP),
306  PAD_CFG_GPI(GPIO_35, DN_20K, DEEP),
307  PAD_CFG_GPI(GPIO_36, DN_20K, DEEP),
308  PAD_CFG_GPI(GPIO_37, DN_20K, DEEP),
309 
310  /* LPSS_UART[0:2] */
311  PAD_CFG_GPI(GPIO_38, UP_20K, DEEP), /* LPSS_UART0_RXD - unused */
312  PAD_CFG_GPI(GPIO_39, DN_20K, DEEP), /* LPSS_UART0_TXD - unused */
313  PAD_CFG_GPI(GPIO_40, DN_20K, DEEP), /* LPSS_UART0_RTS - unused */
314  PAD_CFG_GPI(GPIO_41, UP_20K, DEEP), /* LPSS_UART0_CTS - unused */
315  PAD_CFG_GPI(GPIO_42, NONE, DEEP), /* LPSS_UART1_RXD - unused */
316  PAD_CFG_GPI(GPIO_43, DN_20K, DEEP), /* LPSS_UART1_TXD - unused */
317  PAD_CFG_GPI(GPIO_44, UP_20K, DEEP), /* LPSS_UART1_RTS - unused */
318  PAD_CFG_GPI(GPIO_45, UP_20K, DEEP), /* LPSS_UART1_CTS - unused */
319  PAD_CFG_NF(GPIO_46, NATIVE, DEEP, NF1), /* LPSS_UART2_RXD */
320  /* LPSS_UART2_TXD */
321  PAD_CFG_NF_IOSSTATE(GPIO_47, NATIVE, DEEP, NF1, Tx1RxDCRx0),
322  PAD_CFG_GPI(GPIO_48, DN_20K, DEEP), /* LPSS_UART2_RTS - unused */
323  PAD_CFG_GPI(GPIO_49, UP_20K, DEEP), /* LPSS_UART2_CTS - unused */
324 
325  /* Camera interface -- completely unused. */
326  PAD_CFG_GPI(GPIO_62, DN_20K, DEEP), /* GP_CAMERASB00 */
327  PAD_CFG_GPI(GPIO_63, DN_20K, DEEP), /* GP_CAMERASB01 */
328  PAD_CFG_GPI(GPIO_64, DN_20K, DEEP), /* GP_CAMERASB02 */
329  PAD_CFG_GPI(GPIO_65, DN_20K, DEEP), /* GP_CAMERASB03 */
330  PAD_CFG_GPI(GPIO_66, DN_20K, DEEP), /* GP_CAMERASB04 */
331  PAD_CFG_GPI(GPIO_67, DN_20K, DEEP), /* GP_CAMERASB05 */
332  PAD_CFG_GPI(GPIO_68, DN_20K, DEEP), /* GP_CAMERASB06 */
333  PAD_CFG_GPI(GPIO_69, DN_20K, DEEP), /* GP_CAMERASB07 */
334  PAD_CFG_GPI(GPIO_70, DN_20K, DEEP), /* GP_CAMERASB08 */
335  PAD_CFG_GPI(GPIO_71, DN_20K, DEEP), /* GP_CAMERASB09 */
336  PAD_CFG_GPI(GPIO_72, DN_20K, DEEP), /* GP_CAMERASB10 */
337  PAD_CFG_GPI(GPIO_73, DN_20K, DEEP), /* GP_CAMERASB11 */
338 
339  /* CNV bridge described into IAFW Vol2. */
340  /* GPIO_[216:219] described into EDS Vol1. */
341  PAD_CFG_GPO(CNV_BRI_DT, 0, DEEP), /* Reserve of FPGA */
342  PAD_CFG_GPO(CNV_BRI_RSP, 0, DEEP), /* Reserve of FPGA */
343  PAD_CFG_GPO(CNV_RGI_DT, 0, DEEP), /* Reserve of FPGA */
344  PAD_CFG_NF(CNV_RGI_RSP, UP_20K, DEEP, NF1), /* eMMC */
345 
346  /* Serial VID */
347  PAD_CFG_NF(SVID0_ALERT_B, NONE, DEEP, NF1), /* SVID0_ALERT_B */
348  PAD_CFG_NF(SVID0_DATA, UP_20K, DEEP, NF1), /* SVID0_DATA */
349  PAD_CFG_NF(SVID0_CLK, UP_20K, DEEP, NF1), /* SVID0_CLK */
350 };
351 
352 const struct pad_config *variant_gpio_table(size_t *num)
353 {
354  *num = ARRAY_SIZE(gpio_table);
355  return gpio_table;
356 }
357 
358 /* GPIOs needed prior to ramstage. */
359 static const struct pad_config early_gpio_table[] = {
360  /* UART */
361  PAD_CFG_NF(GPIO_46, NATIVE, DEEP, NF1), /* LPSS_UART2_RXD */
362  PAD_CFG_NF_IOSSTATE(GPIO_47, NATIVE, DEEP, NF1, Tx1RxDCRx0), /* LPSS_UART2_TXD */
363 
364  /* Debug tracing. */
365  PAD_CFG_GPI(GPIO_0, DN_20K, DEEP), /* TRACE_0_CLK_VNN */
366  PAD_CFG_GPI(GPIO_1, DN_20K, DEEP), /* TRACE_0_DATA0_VNN */
367  PAD_CFG_GPI(GPIO_2, DN_20K, DEEP), /* TRACE_0_DATA1_VNN */
368  PAD_CFG_GPI(GPIO_3, DN_20K, DEEP), /* TRACE_0_DATA2_VNN */
369  PAD_CFG_GPI(GPIO_4, DN_20K, DEEP), /* TRACE_0_DATA3_VNN */
370  PAD_CFG_GPI(GPIO_5, DN_20K, DEEP), /* TRACE_0_DATA4_VNN */
371  PAD_CFG_GPI(GPIO_6, DN_20K, DEEP), /* TRACE_0_DATA5_VNN */
372  PAD_CFG_GPI(GPIO_7, DN_20K, DEEP), /* TRACE_0_DATA6_VNN */
373  PAD_CFG_GPI(GPIO_8, DN_20K, DEEP), /* TRACE_0_DATA7_VNN */
374 
375  PAD_CFG_GPO(GPIO_13, 0, DEEP), /* PERST# */
376  PAD_CFG_GPO(GPIO_15, 0, DEEP), /* PERST# */
377  PAD_CFG_GPO(GPIO_17, 1, DEEP), /* PFET */
378  PAD_CFG_GPO(GPIO_19, 1, DEEP), /* PFET */
379  PAD_CFG_GPO(GPIO_152, 0, DEEP), /* PERST# */
380 
381  /* SMBus */
382  PAD_CFG_NF(SMB_CLK, NONE, DEEP, NF1), /* SMB_CLK */
383  PAD_CFG_NF(SMB_DATA, NONE, DEEP, NF1), /* SMB_DATA */
384 
385  /* LPC */
386  PAD_CFG_NF(LPC_ILB_SERIRQ, NONE, DEEP, NF1), /* LPC_SERIRQ */
387  PAD_CFG_NF(LPC_CLKOUT0, NONE, DEEP, NF1), /* LPC_CLKOUT0 */
388  /* LPC_CLKOUT1 - unused */
389  PAD_CFG_GPI(LPC_CLKOUT1, DN_20K, DEEP),
390  PAD_CFG_NF(LPC_AD0, NONE, DEEP, NF1), /* LPC_AD0 */
391  PAD_CFG_NF(LPC_AD1, NONE, DEEP, NF1), /* LPC_AD1 */
392  PAD_CFG_NF(LPC_AD2, NONE, DEEP, NF1), /* LPC_AD2 */
393  PAD_CFG_NF(LPC_AD3, NONE, DEEP, NF1), /* LPC_AD3 */
394  PAD_CFG_NF(LPC_CLKRUNB, NONE, DEEP, NF1), /* LPC_CLKRUN_N */
395  PAD_CFG_NF(LPC_FRAMEB, NONE, DEEP, NF1), /* LPC_FRAME_N */
396 
397  /* Enable reset for PCIe switch. */
398  PAD_CFG_GPO(PMIC_STDBY, 0, DEEP),
399 };
400 
401 const struct pad_config *variant_early_gpio_table(size_t *num)
402 {
404  return early_gpio_table;
405 }
#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 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 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 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 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 OSC_CLK_OUT_3
Definition: gpio_apl.h:257
#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 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 GPIO_28
Definition: gpio_apl.h:93
#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
const struct pad_config * variant_early_gpio_table(size_t *num)
Definition: gpio.c:204
const struct pad_config *__weak variant_gpio_table(size_t *num)
Definition: gpio.c:406
const struct pad_config early_gpio_table[]
Definition: gpio.c:373
static const struct pad_config gpio_table[]
Definition: gpio.c:11
#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_TERM_GPO(pad, val, pull, rst)
Definition: gpio_defs.h:262
#define PAD_CFG_NF(pad, pull, rst, func)
Definition: gpio_defs.h:197
#define PAD_CFG_NF_IOSSTATE(pad, pull, rst, func, iosstate)
Definition: gpio_defs.h:220
#define PAD_CFG_GPO(pad, val, rst)
Definition: gpio_defs.h:247