blob: 928a2116ab9bb9d7530efb32c8042d41ddb4dd83 [file] [log] [blame]
Sean Rhodes5da05b62022-01-10 21:58:04 +00001/* SPDX-License-Identifier: GPL-2.0-only */
2
3#include <gpio.h>
4#include <soc/meminit.h>
5#include <soc/romstage.h>
6#include <string.h>
7#include <variants.h>
8#include <types.h>
9
10/* Early pad configuration in bootblock. */
11const struct pad_config early_gpio_table[] = {
12 /* GPIO_64: UART2_TXD */
13 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_64, UP_20K, DEEP, NF1, HIZCRx1, DISPUPD),
14 /* GPIO_65: UART2_RXD */
15 PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_65, UP_20K, DEEP, NF1, TxLASTRxE, DISPUPD),
16};
17
18const struct pad_config *variant_early_gpio_table(size_t *num)
19{
20 *num = ARRAY_SIZE(early_gpio_table);
21 return early_gpio_table;
22}
23
24/* Pad configuration in ramstage. */
25const struct pad_config gpio_table[] = {
26 /* ------- GPIO Group NorthWest ------- */
27 /* GPIO_0: XDP_H_TCK */
28 PAD_NC(GPIO_0, DN_20K),
29 /* GPIO_1: XDP_H_TRST_N */
30 PAD_NC(GPIO_1, DN_20K),
31 /* GPIO_2: XDP_H_TMS */
32 PAD_NC(GPIO_2, DN_20K),
33 /* GPIO_3: XDP_H_TDI */
34 PAD_NC(GPIO_3, DN_20K),
35 /* GPIO_4: XDP_H_TDO */
36 PAD_NC(GPIO_4, DN_20K),
37 /* GPIO_5: Not Connected */
38 PAD_NC(GPIO_5, DN_20K),
39 /* GPIO_6: XDP_H_PREQ_N */
40 PAD_NC(GPIO_6, DN_20K),
41 /* GPIO_7: XDP_H_PRDY_N */
42 PAD_NC(GPIO_7, DN_20K),
43 /* GPIO_8: Not Connected */
44 PAD_NC(GPIO_8, DN_20K),
45 /* GPIO_9: Not Connected */
46 PAD_NC(GPIO_9, DN_20K),
47 /* GPIO_10: Not Connected */
48 PAD_NC(GPIO_10, DN_20K),
49 /* GPIO_11: Not Connected */
50 PAD_NC(GPIO_11, DN_20K),
51 /* GPIO_12: Not Connected */
52 PAD_NC(GPIO_12, DN_20K),
53 /* GPIO_13: ACCEL1_INT */
54 PAD_NC(GPIO_13, DN_20K),
55 /* GPIO_14: ACCEL2_INT */
56 PAD_NC(GPIO_14, DN_20K),
57 /* GPIO_15: Not Connected */
58 PAD_NC(GPIO_15, DN_20K),
59 /* GPIO_16: SATA_DEVSLP */
Sean Rhodes642c6b12022-05-18 09:27:29 +010060 PAD_NC(GPIO_16, NONE),
Sean Rhodes5da05b62022-01-10 21:58:04 +000061 /* GPIO_17: Not Connected */
62 PAD_NC(GPIO_17, DN_20K),
63 /* GPIO_18: Not Connected */
64 PAD_NC(GPIO_18, DN_20K),
65 /* GPIO_19: PMIC_IRQ# */
66 _PAD_CFG_STRUCT(GPIO_19, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(EDGE_SINGLE) |
67 PAD_IRQ_ROUTE(IOAPIC) | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) |
68 PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)),
69 /* GPIO_20: Not Connected */
70 PAD_NC(GPIO_20, DN_20K),
71 /* GPIO_21: WLAN_WWAN_COEX3 */
72 PAD_NC(GPIO_21, DN_20K),
73 /* GPIO_22: WLAN_WWAN_COEX3 */
74 PAD_NC(GPIO_22, DN_20K),
75 /* GPIO_23: WLAN_WWAN_COEX3 */
76 PAD_NC(GPIO_23, DN_20K),
77 /* GPIO_24: Not Connected */
78 PAD_NC(GPIO_24, DN_20K),
79 /* GPIO_25: Not Connected */
80 PAD_NC(GPIO_25, DN_20K),
81 /* GPIO_26: TPNL_INT# */
82 PAD_NC(GPIO_26, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +010083 /* GPIO_27: eMMC Strap */
84 PAD_NC(GPIO_27, NONE),
85 /* GPIO_28: SPI Strap */
86 PAD_NC(GPIO_28, NONE),
Sean Rhodes5da05b62022-01-10 21:58:04 +000087 /* GPIO_29: Not Connected */
88 PAD_NC(GPIO_29, DN_20K),
89 /* GPIO_30: Not Connected */
90 PAD_NC(GPIO_30, DN_20K),
91 /* GPIO_31: Not Connected */
92 PAD_NC(GPIO_31, DN_20K),
93 /* GPIO_32: Not Connected */
94 PAD_NC(GPIO_32, DN_20K),
95 /* GPIO_33: BT_ON_SOC */
96 _PAD_CFG_STRUCT(GPIO_33, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_IRQ_ROUTE(IOAPIC) |
97 PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) |
98 PAD_IOSSTATE(IGNORE)),
Sean Rhodes642c6b12022-05-18 09:27:29 +010099 /* GPIO_34: WIFI_ON_SOC */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000100 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_34, 1, DEEP, UP_20K, IGNORE, ENPU),
101 /* GPIO_35: Not Connected */
102 PAD_NC(GPIO_35, DN_20K),
103 /* GPIO_36: Not Connected */
104 PAD_NC(GPIO_36, DN_20K),
105 /* GPIO_37: Not Connected */
106 PAD_NC(GPIO_37, DN_20K),
107 /* GPIO_38: WAKE_SCI# */
108 _PAD_CFG_STRUCT(GPIO_38, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(EDGE_SINGLE) |
109 PAD_IRQ_ROUTE(SCI) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) |
110 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
111 /* GPIO_39: FP_RST# */
112 PAD_NC(GPIO_39, DN_20K),
113 /* GPIO_40: Not Connected */
114 PAD_NC(GPIO_40, DN_20K),
115 /* GPIO_41: Not Connected */
116 PAD_NC(GPIO_41, DN_20K),
117 /* GPIO_42: SECURITY_FLASH */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100118 PAD_NC(GPIO_42, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000119 /* GPIO_43: GPIO_43 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100120 PAD_NC(GPIO_43, DN_20K),
121 /* GPIO_44: USB OC0 */
122 PAD_NC(GPIO_44, DN_20K),
123 /* GPIO_45: USB_OC1 */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000124 _PAD_CFG_STRUCT(GPIO_45, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
125 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSTERM(ENPU)),
126 /* GPIO_46: Not Connected */
127 PAD_NC(GPIO_46, DN_20K),
128 /* GPIO_47: Not Connected */
129 PAD_NC(GPIO_47, DN_20K),
130 /* GPIO_48: PMIC_I2C_SDA */
131 _PAD_CFG_STRUCT(GPIO_48, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
132 (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
133 /* GPIO_49: PMIC_I2C_SCL */
134 _PAD_CFG_STRUCT(GPIO_49, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
135 (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100136 /* GPIO_50: I2C_0 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000137 PAD_NC(GPIO_50, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100138 /* GPIO_51: I2C_0 SDL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000139 PAD_NC(GPIO_51, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100140 /* GPIO_52: I2C_1 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000141 PAD_NC(GPIO_52, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100142 /* GPIO_53: I2C_1 SDL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000143 PAD_NC(GPIO_53, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100144 /* GPIO_54: I2C_2 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000145 PAD_NC(GPIO_54, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100146 /* GPIO_55: I2C_2 SDL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000147 PAD_NC(GPIO_55, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100148 /* GPIO_56: I2C_3 SDA */
149 PAD_NC(GPIO_56, DN_20K),
150 /* GPIO_57: I2C_3 SDL */
151 PAD_NC(GPIO_57, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000152 /* GPIO_58: I2C4_SDA */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100153 PAD_NC(GPIO_58, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000154 /* GPIO_59: I2C4_SCL */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100155 PAD_NC(GPIO_59, DN_20K),
156 /* GPIO_60: UART0 RXD */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000157 PAD_NC(GPIO_60, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100158 /* GPIO_61: UART0 TXD */
159 PAD_NC(GPIO_61, DN_20K),
160 /* GPIO_62: UART0 RTS */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000161 PAD_NC(GPIO_62, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100162 /* GPIO_63: UART0 CTS */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000163 PAD_NC(GPIO_63, DN_20K),
164 /* GPIO_66: GPIO_66 */
165 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_66, 1, DEEP, UP_20K, TxLASTRxE, ENPU),
166 /* GPIO_67: SMC_EXTSMI# */
167 _PAD_CFG_STRUCT(GPIO_67, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
168 PAD_IRQ_ROUTE(SMI) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) |
169 (1 << 1), PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)),
170 /* GPIO_68: Not Connected */
171 PAD_NC(GPIO_68, DN_20K),
172 /* GPIO_69: Not Connected */
173 PAD_NC(GPIO_69, DN_20K),
174 /* GPIO_70: Not Connected */
175 PAD_NC(GPIO_70, DN_20K),
176 /* GPIO_71: Not Connected */
177 PAD_NC(GPIO_71, DN_20K),
178 /* GPIO_72: Not Connected */
179 PAD_NC(GPIO_72, DN_20K),
180 /* GPIO_73: Not Connected */
181 PAD_NC(GPIO_73, DN_20K),
182 /* GPIO_74: PMIC_THERMTRIP# */
183 _PAD_CFG_STRUCT(GPIO_74, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
184 PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
185 /* GPIO_75: PROCHOT#_CPU */
186 _PAD_CFG_STRUCT(GPIO_75, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
187 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K)),
188 /* GPIO_211: EMMC_RST#_CPU */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100189 PAD_NC(GPIO_211, UP_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000190 /* GPIO_212: BRD_ID_0 */
191 PAD_NC(GPIO_212, DN_20K),
192 /* GPIO_213: BRD_ID_1 */
193 PAD_NC(GPIO_213, DN_20K),
194 /* GPIO_214: BRD_ID_2 */
195 PAD_NC(GPIO_214, DN_20K),
196
197 /* ------- GPIO Group North ------- */
198 /* GPIO_76: Not Connected */
199 PAD_NC(GPIO_76, DN_20K),
200 /* GPIO_77: Not Connected */
201 PAD_NC(GPIO_77, DN_20K),
202 /* GPIO_78: Not Connected */
203 PAD_NC(GPIO_78, DN_20K),
204 /* GPIO_79: GPIO_79 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100205 PAD_NC(GPIO_79, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000206 /* GPIO_80: FP_FS0 */
207 PAD_NC(GPIO_80, DN_20K),
208 /* GPIO_81: GPIO_81 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100209 PAD_NC(GPIO_81, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000210 /* GPIO_82: FP_MISO */
211 PAD_NC(GPIO_82, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100212 /* GPIO_83: LPC 1.8V/3.3V Select */
213 PAD_NC(GPIO_83, DN_20K),
214 /* GPIO_84: Allow SPI Boot */
215 PAD_NC(GPIO_84, UP_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000216 /* GPIO_85: Not Connected */
217 PAD_NC(GPIO_85, DN_20K),
218 /* GPIO_86: GPIO_86 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100219 PAD_NC(GPIO_86, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000220 /* GPIO_87: Not Connected */
221 PAD_NC(GPIO_87, DN_20K),
222 /* GPIO_88: Not Connected */
223 PAD_NC(GPIO_88, DN_20K),
224 /* GPIO_89: Not Connected */
225 PAD_NC(GPIO_89, DN_20K),
226 /* GPIO_90: FLASH_SPI_CS0_N */
227 _PAD_CFG_STRUCT(GPIO_90, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
228 PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)),
229 /* GPIO_91: Not Connected */
230 PAD_NC(GPIO_91, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100231 /* GPIO_92: FLASH_SPI_MOSI */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000232 _PAD_CFG_STRUCT(GPIO_92, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
233 PAD_BUF(TX_DISABLE), PAD_PULL(NATIVE)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100234 /* GPIO_93: FLASH_SPI_MISO */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000235 _PAD_CFG_STRUCT(GPIO_93, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
236 PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100237 /* GPIO_94: FLASH_SPI_IO2 */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000238 _PAD_CFG_STRUCT(GPIO_94, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
239 PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)),
240 /* GPIO_95: FLASH_SPI_IO3 */
241 _PAD_CFG_STRUCT(GPIO_95, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
242 PAD_BUF(TX_DISABLE) | (1 << 1), PAD_PULL(NATIVE)),
243 /* GPIO_96: FLASH_SPI_CLK */
244 _PAD_CFG_STRUCT(GPIO_96, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
245 PAD_BUF(TX_DISABLE), PAD_PULL(NATIVE)),
246 /* GPIO_98: PMU_PLT_RST#_CPU */
247 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_98, 1, DEEP, UP_20K, TxLASTRxE, ENPD),
248 /* GPIO_99: PM_PWRBTN# */
249 _PAD_CFG_STRUCT(GPIO_99, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
250 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
251 /* GPIO_100: SLP_S0# */
252 _PAD_CFG_STRUCT(GPIO_100, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
253 PAD_IOSSTATE(IGNORE)),
254 /* GPIO_101: SLP_S3# */
255 _PAD_CFG_STRUCT(GPIO_101, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
256 PAD_IOSSTATE(IGNORE)),
257 /* GPIO_102: SLP_S4# */
258 _PAD_CFG_STRUCT(GPIO_102, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
259 PAD_IOSSTATE(IGNORE)),
260 /* GPIO_103: SUSPWRDNACK */
261 _PAD_CFG_STRUCT(GPIO_103, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
262 PAD_IOSSTATE(IGNORE)),
263 /* GPIO_104: Not Connected */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100264 PAD_NC(GPIO_104, UP_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000265 /* GPIO_105: GPIO_105 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100266 PAD_NC(GPIO_105, UP_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000267 /* GPIO_106: PMU_BATLOW# */
268 _PAD_CFG_STRUCT(GPIO_106, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
269 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
270 /* GPIO_107: PMU_RSTBTN# */
271 _PAD_CFG_STRUCT(GPIO_107, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
272 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) | PAD_IOSTERM(ENPU)),
273 /* GPIO_108: SUS_CLK */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100274 PAD_NC(GPIO_108, NONE),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000275 /* GPIO_109: PMU_SUS_STAT# */
276 _PAD_CFG_STRUCT(GPIO_109, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
277 PAD_IOSSTATE(IGNORE)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100278 /* GPIO_110: I2C_5 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000279 PAD_NC(GPIO_110, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100280 /* GPIO_111: I2C_5 SDL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000281 PAD_NC(GPIO_111, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100282 /* GPIO_112: I2C_6 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000283 PAD_NC(GPIO_112, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100284 /* GPIO_113: I2C_6 SCL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000285 PAD_NC(GPIO_113, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100286 /* GPIO_114: I2C_7 SDA */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000287 _PAD_CFG_STRUCT(GPIO_114, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
288 (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100289 /* GPIO_115: I2C_7 SCL */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000290 _PAD_CFG_STRUCT(GPIO_115, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
291 (1 << 1), PAD_PULL(UP_1K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100292 /* GPIO_116: WLAN_PCIE_WAKE# */
293 PAD_NC(GPIO_116, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000294 /* GPIO_117: Not Connected */
295 PAD_NC(GPIO_117, DN_20K),
296 /* GPIO_118: Not Connected */
297 PAD_NC(GPIO_118, DN_20K),
298 /* GPIO_119: Not Connected */
299 PAD_NC(GPIO_119, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100300 /* GPIO_120: WLAN_CLK_REQ# */
301 PAD_NC(GPIO_120, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000302 /* GPIO_121: Not Connected */
303 PAD_NC(GPIO_121, DN_20K),
304 /* GPIO_122: Not Connected */
305 PAD_NC(GPIO_122, DN_20K),
306 /* GPIO_123: Not Connected */
307 PAD_NC(GPIO_123, DN_20K),
308 /* GPIO_124: DDI0_DDC_SDA */
309 _PAD_CFG_STRUCT(GPIO_124, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
310 PAD_IOSSTATE(HIZCRx0) | PAD_IOSTERM(ENPU)),
311 /* GPIO_125: DDI0_DDC_SCL */
312 _PAD_CFG_STRUCT(GPIO_125, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
313 PAD_IOSSTATE(HIZCRx0) | PAD_IOSTERM(ENPU)),
314 /* GPIO_126: Not Connected */
315 PAD_NC(GPIO_126, DN_20K),
316 /* GPIO_127: Not Connected */
317 PAD_NC(GPIO_127, DN_20K),
318 /* GPIO_128: EDP_VDD_EN */
319 _PAD_CFG_STRUCT(GPIO_128, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
320 PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)),
321 /* GPIO_129: EDP_BKLT_EN */
322 _PAD_CFG_STRUCT(GPIO_129, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
323 PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)),
324 /* GPIO_130: eDP_BKLCTL_3P3 */
325 _PAD_CFG_STRUCT(GPIO_130, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
326 PAD_PULL(DN_20K) | PAD_IOSSTATE(Tx0RxDCRx0) | PAD_IOSTERM(ENPD)),
327 /* GPIO_131: HDMI_HPD_CPU */
328 _PAD_CFG_STRUCT(GPIO_131, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
329 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)),
330 /* GPIO_132: DDI1_HPD_SOC_N */
331 _PAD_CFG_STRUCT(GPIO_132, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
332 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)),
333 /* GPIO_133: EDP_HPD_CPU */
334 _PAD_CFG_STRUCT(GPIO_133, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF),
335 PAD_IOSSTATE(TxDRxE) | PAD_IOSTERM(ENPU)),
336 /* GPIO_134: Touch_Panel_RST# */
337 PAD_NC(GPIO_134, DN_20K),
338 /* GPIO_135: TCH_HOME_KEY */
339 PAD_NC(GPIO_135, DN_20K),
340 /* GPIO_136: Not Connected */
341 PAD_NC(GPIO_136, DN_20K),
342 /* GPIO_137: Not Connected */
343 PAD_NC(GPIO_137, DN_20K),
344 /* GPIO_138: Not Connected */
345 PAD_NC(GPIO_138, DN_20K),
346 /* GPIO_139: Not Connected */
347 PAD_NC(GPIO_139, DN_20K),
348 /* GPIO_140: Not Connected */
349 PAD_NC(GPIO_140, DN_20K),
350 /* GPIO_141: Not Connected */
351 PAD_NC(GPIO_141, DN_20K),
352 /* GPIO_142: PMU_WAKE# */
353 _PAD_CFG_STRUCT(GPIO_142, PAD_FUNC(GPIO) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
354 PAD_IRQ_ROUTE(IOAPIC) | PAD_RX_POL(INVERT) | PAD_BUF(TX_DISABLE) |
355 (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) | PAD_IOSTERM(ENPU)),
356 /* GPIO_143: Not Connected */
357 PAD_NC(GPIO_143, DN_20K),
358 /* GPIO_144: Not Connected */
359 PAD_NC(GPIO_144, DN_20K),
360 /* GPIO_145: Not Connected */
361 PAD_NC(GPIO_145, DN_20K),
362 /* GPIO_146: Not Connected */
363 PAD_NC(GPIO_146, DN_20K),
364 /* GPIO_147: LPC_SERIRQ */
365 _PAD_CFG_STRUCT(GPIO_147, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
366 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSTERM(ENPU)),
367 /* GPIO_148: LPC_CLK0 */
368 _PAD_CFG_STRUCT(GPIO_148, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
369 PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(HIZCRx1)),
370 /* GPIO_149: LPC_CLK_DBG_CPU */
371 _PAD_CFG_STRUCT(GPIO_149, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
372 PAD_BUF(TX_RX_DISABLE), PAD_IOSSTATE(HIZCRx1)),
373 /* GPIO_150: LPC_AD0 */
374 _PAD_CFG_STRUCT(GPIO_150, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
375 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) |
376 PAD_IOSTERM(ENPU)),
377 /* GPIO_151: LPC_AD1 */
378 _PAD_CFG_STRUCT(GPIO_151, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
379 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) |
380 PAD_IOSTERM(ENPU)),
381 /* GPIO_152: LPC_AD2 */
382 _PAD_CFG_STRUCT(GPIO_152, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
383 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) |
384 PAD_IOSTERM(ENPU)),
385 /* GPIO_153: LPC_AD3 */
386 _PAD_CFG_STRUCT(GPIO_153, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
387 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) |
388 PAD_IOSTERM(ENPU)),
389 /* GPIO_154: LPC_CLKRUN# */
390 _PAD_CFG_STRUCT(GPIO_154, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
391 PAD_BUF(TX_RX_DISABLE) | (1 << 1), PAD_PULL(UP_20K)),
392 /* GPIO_155: LPC_FRAME# */
393 _PAD_CFG_STRUCT(GPIO_155, PAD_FUNC(NF1) | PAD_RESET(DEEP) | PAD_TRIG(OFF) |
394 PAD_BUF(TX_RX_DISABLE), PAD_PULL(UP_20K) | PAD_IOSSTATE(HIZCRx1) |
395 PAD_IOSTERM(ENPU)),
396
397 /* ----- GPIO Group Audio ----- */
398 /* GPIO_156: FP_INT# */
399 PAD_NC(GPIO_156, DN_20K),
400 /* GPIO_157: Not Connected */
401 PAD_NC(GPIO_157, DN_20K),
402 /* GPIO_158: Not Connected */
403 PAD_NC(GPIO_158, DN_20K),
404 /* GPIO_159: Not Connected */
405 PAD_NC(GPIO_159, DN_20K),
406 /* GPIO_160: Not Connected */
407 PAD_NC(GPIO_160, DN_20K),
408 /* GPIO_161: GPIO_161 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100409 PAD_NC(GPIO_161, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000410 /* GPIO_162: Not Connected */
411 PAD_NC(GPIO_162, DN_20K),
412 /* GPIO_163: GPIO_163 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100413 PAD_NC(GPIO_163, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000414 /* GPIO_164: GPIO_164 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100415 PAD_NC(GPIO_164, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000416 /* GPIO_165: GPIO_165 */
417 PAD_NC(GPIO_165, DN_20K),
418 /* GPIO_166: HDA_BCLK_CPU_R */
419 _PAD_CFG_STRUCT(GPIO_166, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
420 PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) |
421 PAD_IOSTERM(ENPD)),
422 /* GPIO_167: HDA_SYNC_CPU_R */
423 _PAD_CFG_STRUCT(GPIO_167, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
424 PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) |
425 PAD_IOSTERM(ENPD)),
426 /* GPIO_168: GPIO_168 */
427 _PAD_CFG_STRUCT(GPIO_168, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
428 PAD_TRIG(OFF), PAD_IOSSTATE(HIZCRx1)),
429 /* GPIO_169: HDA_SDATAOUT */
430 _PAD_CFG_STRUCT(GPIO_169, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
431 PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) |
432 PAD_IOSTERM(ENPD)),
433 /* GPIO_170: HDA_RST# */
434 _PAD_CFG_STRUCT(GPIO_170, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
435 PAD_TRIG(OFF), PAD_PULL(DN_20K) | PAD_IOSSTATE(HIZCRx1) |
436 PAD_IOSTERM(ENPD)),
437 /* GPIO_171: Not Connected */
438 PAD_NC(GPIO_171, DN_20K),
439 /* GPIO_172: Not Connected */
440 PAD_NC(GPIO_172, DN_20K),
441 /* GPIO_173: Not Connected */
442 PAD_NC(GPIO_173, DN_20K),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100443 /* GPIO_174: VDD2 1.20V / 1.24V Select */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000444 PAD_CFG_GPO_IOSSTATE_IOSTERM(GPIO_174, 1, DEEP, DN_20K, TxLASTRxE, ENPU),
445 /* GPIO_175: GPIO_175 */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100446 PAD_NC(GPIO_175, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000447
448 /* ----- GPIO Group SCC ----- */
449 /* GPIO_176: Not Connected */
450 PAD_NC(GPIO_176, DN_20K),
451 /* GPIO_177: TP_INT# */
452 PAD_CFG_GPI_GPIO_DRIVER(GPIO_177, NONE, PLTRST),
453 /* GPIO_178: Not Connected */
454 PAD_NC(GPIO_178, DN_20K),
455 /* GPIO_187: Not Connected */
456 PAD_NC(GPIO_187, DN_20K),
457 /* GPIO_179: Not Connected */
458 PAD_NC(GPIO_179, DN_20K),
459 /* GPIO_181: Not Connected */
460 PAD_NC(GPIO_181, DN_20K),
461 /* GPIO_182: Not Connected */
462 PAD_NC(GPIO_182, DN_20K),
463 /* GPIO_183: Not Connected */
464 PAD_NC(GPIO_183, DN_20K),
465 /* GPIO_184: Not Connected */
466 PAD_NC(GPIO_184, DN_20K),
Sean Rhodes32528972022-03-09 09:07:40 +0000467 /* GPIO_185: WLAN_RST_N_R */
Sean Rhodes642c6b12022-05-18 09:27:29 +0100468 PAD_NC(GPIO_185, DN_20K),
Sean Rhodes5da05b62022-01-10 21:58:04 +0000469 /* GPIO_186: Not Connected */
470 PAD_NC(GPIO_186, DN_20K),
471 /* GPIO_188: Not Connected */
472 PAD_NC(GPIO_188, DN_20K),
473 /* GPIO_210: Not Connected */
474 PAD_NC(GPIO_210, DN_20K),
475 /* GPIO_189: Not Connected */
476 PAD_NC(GPIO_189, DN_20K),
477 /* GPIO_190: Not Connected */
478 PAD_NC(GPIO_190, DN_20K),
479 /* GPIO_191: GPIO_191 */
480 _PAD_CFG_STRUCT(GPIO_191, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
481 PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)),
482 /* GPIO_192: CNVI_BRI_RSP */
483 _PAD_CFG_STRUCT(GPIO_192, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
484 PAD_TRIG(OFF) | (1 << 1), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) |
485 PAD_IOSTERM(ENPU)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100486 /* GPIO_193: CNVI_RGI_DT */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000487 _PAD_CFG_STRUCT(GPIO_193, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
488 PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100489 /* GPIO_194: GPIO_194 */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000490 _PAD_CFG_STRUCT(GPIO_194, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
491 PAD_TRIG(OFF), PAD_PULL(UP_20K) | PAD_IOSSTATE(IGNORE) |
492 PAD_IOSTERM(ENPU)),
Sean Rhodes642c6b12022-05-18 09:27:29 +0100493 /* GPIO_195: CNVI_RF_RESET_N */
Sean Rhodes5da05b62022-01-10 21:58:04 +0000494 _PAD_CFG_STRUCT(GPIO_195, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
495 PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)),
496 /* GPIO_196: GPIO_196 */
497 _PAD_CFG_STRUCT(GPIO_196, PAD_FUNC(NF1) | PAD_RESET(DEEP) |
498 PAD_TRIG(OFF), PAD_IOSSTATE(IGNORE)),
499 /* GPIO_198: EMMC_CLK */
500 PAD_NC(GPIO_198, DN_20K),
501 /* GPIO_200: EMMC_DATA_0 */
502 PAD_NC(GPIO_200, DN_20K),
503 /* GPIO_201: EMMC_DATA_1 */
504 PAD_NC(GPIO_201, DN_20K),
505 /* GPIO_202: EMMC_DATA_2 */
506 PAD_NC(GPIO_202, DN_20K),
507 /* GPIO_203: EMMC_DATA_3 */
508 PAD_NC(GPIO_203, DN_20K),
509 /* GPIO_204: EMMC_DATA_4 */
510 PAD_NC(GPIO_204, DN_20K),
511 /* GPIO_205: EMMC_DATA_5 */
512 PAD_NC(GPIO_205, DN_20K),
513 /* GPIO_206: EMMC_DATA_6 */
514 PAD_NC(GPIO_206, DN_20K),
515 /* GPIO_207: EMMC_DATA_7 */
516 PAD_NC(GPIO_207, DN_20K),
517 /* GPIO_208: EMMC_CMD */
518 PAD_NC(GPIO_208, DN_20K),
519 /* GPIO_209: EMMC_STROBE */
520 PAD_NC(GPIO_209, DN_20K),
521};
522
523const struct pad_config *variant_gpio_table(size_t *num)
524{
525 *num = ARRAY_SIZE(gpio_table);
526 return gpio_table;
527}