blob: f48fd5edabc499f9c07d35434d89401fd5dab3fa [file] [log] [blame]
Angel Pons7544e2f2020-04-03 01:23:10 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Dennis Wassenbergbd105162015-09-10 12:20:58 +02002
3#include <southbridge/intel/common/gpio.h>
4
5/*
6 * TODO: Investigate somehow... Current values are taken from a running
7 * system with vendor supplied firmware.
8 */
9static const struct pch_gpio_set1 pch_gpio_set1_mode = {
10 .gpio0 = GPIO_MODE_GPIO, /* strap */
11 .gpio1 = GPIO_MODE_GPIO, /* EC SMI# */
12 .gpio2 = GPIO_MODE_GPIO, /* strap */
13 .gpio3 = GPIO_MODE_GPIO, /* strapped weak high */
14 .gpio4 = GPIO_MODE_GPIO, /* DDR3 thermal ALERT# */
15 .gpio5 = GPIO_MODE_GPIO, /* DDR3 thermal THERM# */
16 .gpio6 = GPIO_MODE_GPIO, /* DGPU hotplug? */
17 .gpio7 = GPIO_MODE_GPIO, /* EC SCI# */
18 .gpio8 = GPIO_MODE_GPIO, /* strap */
19 .gpio9 = GPIO_MODE_NATIVE, /* USB OC #5 */
20 .gpio10 = GPIO_MODE_NATIVE, /* USB OC #6; strapped weak high */
21 .gpio11 = GPIO_MODE_GPIO, /* strapped weak high */
22 .gpio12 = GPIO_MODE_NATIVE, /* LAN PHY Power Control */
23 .gpio13 = GPIO_MODE_NATIVE, /* HDA Audio Dock Reset */
24 .gpio14 = GPIO_MODE_GPIO, /* EC wake SCI# */
25 .gpio15 = GPIO_MODE_GPIO, /* strapped high */
26 .gpio16 = GPIO_MODE_NATIVE, /* SATA 4 GP */
27 .gpio17 = GPIO_MODE_GPIO, /* strapped weak low */
28 .gpio18 = GPIO_MODE_NATIVE, /* PCIe clock request 1 */
29 .gpio19 = GPIO_MODE_NATIVE, /* SATA 9 GP */
30 .gpio20 = GPIO_MODE_NATIVE, /* PCIe clock request 2 */
31 .gpio21 = GPIO_MODE_NATIVE, /* SATA 0 GP */
32 .gpio22 = GPIO_MODE_GPIO, /* strap */
33 .gpio23 = GPIO_MODE_NATIVE, /* LPC DMA request 1; strapped weak high */
34 .gpio24 = GPIO_MODE_GPIO, /* strapped weak high */
35 .gpio25 = GPIO_MODE_NATIVE, /* PCIe clock request 3 */
36 .gpio26 = GPIO_MODE_NATIVE, /* PCIe clock request 4 */
37 .gpio27 = GPIO_MODE_GPIO, /* SATA power (active low) */
38 .gpio28 = GPIO_MODE_GPIO, /* PCH strap ODVR, Output LOW */
39 .gpio29 = GPIO_MODE_GPIO, /* Sleep LAN power (sleep low) */
40 .gpio30 = GPIO_MODE_NATIVE, /* Suspend Warning */
41 .gpio31 = GPIO_MODE_NATIVE, /* AC present */
42};
43
44static const struct pch_gpio_set1 pch_gpio_set1_direction = {
45 .gpio0 = GPIO_DIR_INPUT, /* Unknown Input */
46 .gpio1 = GPIO_DIR_INPUT, /* Unknown Input */
47 .gpio2 = GPIO_DIR_INPUT, /* Unknown Input */
48 .gpio3 = GPIO_DIR_INPUT, /* Unknown Input */
49 .gpio4 = GPIO_DIR_INPUT, /* Unknown Input */
50 .gpio5 = GPIO_DIR_INPUT, /* Unknown Input */
51 .gpio6 = GPIO_DIR_INPUT, /* Unknown Input */
52 .gpio7 = GPIO_DIR_INPUT, /* Unknown Input */
53 .gpio8 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
54 .gpio9 = GPIO_DIR_INPUT, /* Native */
55 .gpio10 = GPIO_DIR_INPUT, /* Native */
56 .gpio11 = GPIO_DIR_INPUT, /* Unknown Input */
57 .gpio12 = GPIO_DIR_INPUT, /* Native */
58 .gpio13 = GPIO_DIR_INPUT, /* Native */
59 .gpio14 = GPIO_DIR_INPUT, /* Unknown Input */
60 .gpio15 = GPIO_DIR_INPUT, /* Unknown Input */
61 .gpio16 = GPIO_DIR_INPUT, /* Native */
62 .gpio17 = GPIO_DIR_INPUT, /* Unknown Input */
63 .gpio18 = GPIO_DIR_INPUT, /* Native */
64 .gpio19 = GPIO_DIR_INPUT, /* Native */
65 .gpio20 = GPIO_DIR_INPUT, /* Native */
66 .gpio21 = GPIO_DIR_INPUT, /* Native */
67 .gpio22 = GPIO_DIR_INPUT, /* Unknown Input */
68 .gpio23 = GPIO_DIR_INPUT, /* Native */
69 .gpio24 = GPIO_DIR_INPUT, /* Unknown Input */
70 .gpio25 = GPIO_DIR_INPUT, /* Native */
71 .gpio26 = GPIO_DIR_INPUT, /* Native */
72 .gpio27 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
73 .gpio28 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
74 .gpio29 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
75 .gpio30 = GPIO_DIR_INPUT, /* Native */
76 .gpio31 = GPIO_DIR_INPUT, /* Native */
77};
78
79static const struct pch_gpio_set1 pch_gpio_set1_level = {
80 .gpio0 = GPIO_LEVEL_LOW, /* Unknown Input */
81 .gpio1 = GPIO_LEVEL_LOW, /* Unknown Input */
82 .gpio2 = GPIO_LEVEL_LOW, /* Unknown Input */
83 .gpio3 = GPIO_LEVEL_LOW, /* Unknown Input */
84 .gpio4 = GPIO_LEVEL_LOW, /* Unknown Input */
85 .gpio5 = GPIO_LEVEL_LOW, /* Unknown Input */
86 .gpio6 = GPIO_LEVEL_LOW, /* Unknown Input */
87 .gpio7 = GPIO_LEVEL_LOW, /* Unknown Input */
88 .gpio8 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
89 .gpio9 = GPIO_LEVEL_LOW, /* Native */
90 .gpio10 = GPIO_LEVEL_LOW, /* Native */
91 .gpio11 = GPIO_LEVEL_LOW, /* Unknown Input */
92 .gpio12 = GPIO_LEVEL_LOW, /* Native */
93 .gpio13 = GPIO_LEVEL_LOW, /* Native */
94 .gpio14 = GPIO_LEVEL_LOW, /* Unknown Input */
95 .gpio15 = GPIO_LEVEL_LOW, /* Unknown Input */
96 .gpio16 = GPIO_LEVEL_LOW, /* Native */
97 .gpio17 = GPIO_LEVEL_LOW, /* Unknown Input */
98 .gpio18 = GPIO_LEVEL_LOW, /* Native */
99 .gpio19 = GPIO_LEVEL_LOW, /* Native */
100 .gpio20 = GPIO_LEVEL_LOW, /* Native */
101 .gpio21 = GPIO_LEVEL_LOW, /* Native */
102 .gpio22 = GPIO_LEVEL_LOW, /* Unknown Input */
103 .gpio23 = GPIO_LEVEL_LOW, /* Native */
104 .gpio24 = GPIO_LEVEL_LOW, /* Unknown Input */
105 .gpio25 = GPIO_LEVEL_LOW, /* Native */
106 .gpio26 = GPIO_LEVEL_LOW, /* Native */
107 .gpio27 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
108 .gpio28 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
109 .gpio29 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
110 .gpio30 = GPIO_LEVEL_LOW, /* Native */
111 .gpio31 = GPIO_LEVEL_LOW, /* Native */
112};
113
114static const struct pch_gpio_set1 pch_gpio_set1_reset = {
115 .gpio0 = GPIO_RESET_PWROK,
116 .gpio1 = GPIO_RESET_PWROK,
117 .gpio2 = GPIO_RESET_PWROK,
118 .gpio3 = GPIO_RESET_PWROK,
119 .gpio4 = GPIO_RESET_PWROK,
120 .gpio5 = GPIO_RESET_PWROK,
121 .gpio6 = GPIO_RESET_PWROK,
122 .gpio7 = GPIO_RESET_PWROK,
123 .gpio8 = GPIO_RESET_PWROK,
124 .gpio9 = GPIO_RESET_PWROK,
125 .gpio10 = GPIO_RESET_PWROK,
126 .gpio11 = GPIO_RESET_PWROK,
127 .gpio12 = GPIO_RESET_PWROK,
128 .gpio13 = GPIO_RESET_PWROK,
129 .gpio14 = GPIO_RESET_PWROK,
130 .gpio15 = GPIO_RESET_PWROK,
131 .gpio16 = GPIO_RESET_PWROK,
132 .gpio17 = GPIO_RESET_PWROK,
133 .gpio18 = GPIO_RESET_PWROK,
134 .gpio19 = GPIO_RESET_PWROK,
135 .gpio20 = GPIO_RESET_PWROK,
136 .gpio21 = GPIO_RESET_PWROK,
137 .gpio22 = GPIO_RESET_PWROK,
138 .gpio23 = GPIO_RESET_PWROK,
139 .gpio24 = GPIO_RESET_PWROK,
140 .gpio25 = GPIO_RESET_PWROK,
141 .gpio26 = GPIO_RESET_PWROK,
142 .gpio27 = GPIO_RESET_PWROK,
143 .gpio28 = GPIO_RESET_PWROK,
144 .gpio29 = GPIO_RESET_PWROK,
145 .gpio30 = GPIO_RESET_RSMRST,
146 .gpio31 = GPIO_RESET_PWROK,
147};
148
149static const struct pch_gpio_set1 pch_gpio_set1_invert = {
150 .gpio0 = GPIO_NO_INVERT,
151 .gpio1 = GPIO_INVERT,
152 .gpio2 = GPIO_NO_INVERT,
153 .gpio3 = GPIO_INVERT,
154 .gpio4 = GPIO_NO_INVERT,
155 .gpio5 = GPIO_NO_INVERT,
156 .gpio6 = GPIO_NO_INVERT,
157 .gpio7 = GPIO_INVERT,
158 .gpio8 = GPIO_NO_INVERT,
159 .gpio9 = GPIO_NO_INVERT,
160 .gpio10 = GPIO_NO_INVERT,
161 .gpio11 = GPIO_NO_INVERT,
162 .gpio12 = GPIO_NO_INVERT,
163 .gpio13 = GPIO_NO_INVERT,
164 .gpio14 = GPIO_INVERT,
165 .gpio15 = GPIO_INVERT,
166 .gpio16 = GPIO_NO_INVERT,
167 .gpio17 = GPIO_NO_INVERT,
168 .gpio18 = GPIO_NO_INVERT,
169 .gpio19 = GPIO_NO_INVERT,
170 .gpio20 = GPIO_NO_INVERT,
171 .gpio21 = GPIO_NO_INVERT,
172 .gpio22 = GPIO_NO_INVERT,
173 .gpio23 = GPIO_NO_INVERT,
174 .gpio24 = GPIO_NO_INVERT,
175 .gpio25 = GPIO_NO_INVERT,
176 .gpio26 = GPIO_NO_INVERT,
177 .gpio27 = GPIO_NO_INVERT,
178 .gpio28 = GPIO_NO_INVERT,
179 .gpio29 = GPIO_NO_INVERT,
180 .gpio30 = GPIO_NO_INVERT,
181 .gpio31 = GPIO_NO_INVERT,
182};
183
184static const struct pch_gpio_set1 pch_gpio_set1_blink = {
185 .gpio0 = GPIO_NO_BLINK,
186 .gpio1 = GPIO_NO_BLINK,
187 .gpio2 = GPIO_NO_BLINK,
188 .gpio3 = GPIO_NO_BLINK,
189 .gpio4 = GPIO_NO_BLINK,
190 .gpio5 = GPIO_NO_BLINK,
191 .gpio6 = GPIO_NO_BLINK,
192 .gpio7 = GPIO_NO_BLINK,
193 .gpio8 = GPIO_NO_BLINK,
194 .gpio9 = GPIO_NO_BLINK,
195 .gpio10 = GPIO_NO_BLINK,
196 .gpio11 = GPIO_NO_BLINK,
197 .gpio12 = GPIO_NO_BLINK,
198 .gpio13 = GPIO_NO_BLINK,
199 .gpio14 = GPIO_NO_BLINK,
200 .gpio15 = GPIO_NO_BLINK,
201 .gpio16 = GPIO_NO_BLINK,
202 .gpio17 = GPIO_NO_BLINK,
203 .gpio18 = GPIO_NO_BLINK,
204 .gpio19 = GPIO_NO_BLINK,
205 .gpio20 = GPIO_NO_BLINK,
206 .gpio21 = GPIO_NO_BLINK,
207 .gpio22 = GPIO_NO_BLINK,
208 .gpio23 = GPIO_NO_BLINK,
209 .gpio24 = GPIO_NO_BLINK,
210 .gpio25 = GPIO_NO_BLINK,
211 .gpio26 = GPIO_NO_BLINK,
212 .gpio27 = GPIO_NO_BLINK,
213 .gpio28 = GPIO_NO_BLINK,
214 .gpio29 = GPIO_NO_BLINK,
215 .gpio30 = GPIO_NO_BLINK,
216 .gpio31 = GPIO_NO_BLINK,
217};
218
219static const struct pch_gpio_set2 pch_gpio_set2_mode = {
220 .gpio32 = GPIO_MODE_NATIVE, /* Native */
221 .gpio33 = GPIO_MODE_NATIVE, /* Native */
222 .gpio34 = GPIO_MODE_GPIO, /* Unknown Output LOW */
223 .gpio35 = GPIO_MODE_NATIVE, /* Native */
224 .gpio36 = GPIO_MODE_NATIVE, /* Native */
225 .gpio37 = GPIO_MODE_GPIO, /* Unknown Output LOW */
226 .gpio38 = GPIO_MODE_GPIO, /* Unknown Input */
227 .gpio39 = GPIO_MODE_GPIO, /* Unknown Input */
228 .gpio40 = GPIO_MODE_NATIVE, /* USB OC #1 */
229 .gpio41 = GPIO_MODE_NATIVE, /* USB OC #2 */
230 .gpio42 = GPIO_MODE_NATIVE, /* USB OC #3 */
231 .gpio43 = GPIO_MODE_NATIVE, /* USB OC #4 */
232 .gpio44 = GPIO_MODE_NATIVE, /* Native */
233 .gpio45 = GPIO_MODE_NATIVE, /* Native */
234 .gpio46 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
235 .gpio47 = GPIO_MODE_NATIVE, /* Native */
236 .gpio48 = GPIO_MODE_GPIO, /* Unknown Input */
237 .gpio49 = GPIO_MODE_GPIO, /* Unknown Input */
238 .gpio50 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
239 .gpio51 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
240 .gpio52 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
241 .gpio53 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
242 .gpio54 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
243 .gpio55 = GPIO_MODE_GPIO, /* Unknown Output LOW */
244 .gpio56 = GPIO_MODE_NATIVE, /* Native */
245 .gpio57 = GPIO_MODE_GPIO, /* Unknown Input */
246 .gpio58 = GPIO_MODE_NATIVE, /* Native */
247 .gpio59 = GPIO_MODE_NATIVE, /* USB OC #0 */
248 .gpio60 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
249 .gpio61 = GPIO_MODE_NATIVE, /* Native */
250 .gpio62 = GPIO_MODE_NATIVE, /* Native */
251 .gpio63 = GPIO_MODE_NATIVE, /* Native */
252};
253
254static const struct pch_gpio_set2 pch_gpio_set2_direction = {
255 .gpio32 = GPIO_DIR_INPUT, /* Native */
256 .gpio33 = GPIO_DIR_INPUT, /* Native */
257 .gpio34 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
258 .gpio35 = GPIO_DIR_INPUT, /* Native */
259 .gpio36 = GPIO_DIR_INPUT, /* Native */
260 .gpio37 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
261 .gpio38 = GPIO_DIR_INPUT, /* Unknown Input */
262 .gpio39 = GPIO_DIR_INPUT, /* Unknown Input */
263 .gpio40 = GPIO_DIR_INPUT, /* Native */
264 .gpio41 = GPIO_DIR_INPUT, /* Native */
265 .gpio42 = GPIO_DIR_INPUT, /* Native */
266 .gpio43 = GPIO_DIR_INPUT, /* Native */
267 .gpio44 = GPIO_DIR_INPUT, /* Native */
268 .gpio45 = GPIO_DIR_INPUT, /* Native */
269 .gpio46 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
270 .gpio47 = GPIO_DIR_INPUT, /* Native */
271 .gpio48 = GPIO_DIR_INPUT, /* Unknown Input */
272 .gpio49 = GPIO_DIR_INPUT, /* Unknown Input */
273 .gpio50 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
274 .gpio51 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
275 .gpio52 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
276 .gpio53 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
277 .gpio54 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
278 .gpio55 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
279 .gpio56 = GPIO_DIR_INPUT, /* Native */
280 .gpio57 = GPIO_DIR_INPUT, /* Unknown Input */
281 .gpio58 = GPIO_DIR_INPUT, /* Native */
282 .gpio59 = GPIO_DIR_INPUT, /* Native */
283 .gpio60 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
284 .gpio61 = GPIO_DIR_INPUT, /* Native */
285 .gpio62 = GPIO_DIR_INPUT, /* Native */
286 .gpio63 = GPIO_DIR_INPUT, /* Native */
287};
288
289static const struct pch_gpio_set2 pch_gpio_set2_level = {
290 .gpio32 = GPIO_LEVEL_LOW, /* Native */
291 .gpio33 = GPIO_LEVEL_LOW, /* Native */
292 .gpio34 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
293 .gpio35 = GPIO_LEVEL_LOW, /* Native */
294 .gpio36 = GPIO_LEVEL_LOW, /* Native */
295 .gpio37 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
296 .gpio38 = GPIO_LEVEL_LOW, /* Unknown Input */
297 .gpio39 = GPIO_LEVEL_LOW, /* Unknown Input */
298 .gpio40 = GPIO_LEVEL_LOW, /* Native */
299 .gpio41 = GPIO_LEVEL_LOW, /* Native */
300 .gpio42 = GPIO_LEVEL_LOW, /* Native */
301 .gpio43 = GPIO_LEVEL_LOW, /* Native */
302 .gpio44 = GPIO_LEVEL_LOW, /* Native */
303 .gpio45 = GPIO_LEVEL_LOW, /* Native */
304 .gpio46 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
305 .gpio47 = GPIO_LEVEL_LOW, /* Native */
306 .gpio48 = GPIO_LEVEL_LOW, /* Unknown Input */
307 .gpio49 = GPIO_LEVEL_LOW, /* Unknown Input */
308 .gpio50 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
309 .gpio51 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
310 .gpio52 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
311 .gpio53 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
312 .gpio54 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
313 .gpio55 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
314 .gpio56 = GPIO_LEVEL_LOW, /* Native */
315 .gpio57 = GPIO_LEVEL_LOW, /* Unknown Input */
316 .gpio58 = GPIO_LEVEL_LOW, /* Native */
317 .gpio59 = GPIO_LEVEL_LOW, /* Native */
318 .gpio60 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
319 .gpio61 = GPIO_LEVEL_LOW, /* Native */
320 .gpio62 = GPIO_LEVEL_LOW, /* Native */
321 .gpio63 = GPIO_LEVEL_LOW, /* Native */
322};
323
324static const struct pch_gpio_set2 pch_gpio_set2_reset = {
325 .gpio32 = GPIO_RESET_PWROK,
326 .gpio33 = GPIO_RESET_PWROK,
327 .gpio34 = GPIO_RESET_PWROK,
328 .gpio35 = GPIO_RESET_PWROK,
329 .gpio36 = GPIO_RESET_PWROK,
330 .gpio37 = GPIO_RESET_PWROK,
331 .gpio38 = GPIO_RESET_PWROK,
332 .gpio39 = GPIO_RESET_PWROK,
333 .gpio40 = GPIO_RESET_PWROK,
334 .gpio41 = GPIO_RESET_PWROK,
335 .gpio42 = GPIO_RESET_PWROK,
336 .gpio43 = GPIO_RESET_PWROK,
337 .gpio44 = GPIO_RESET_PWROK,
338 .gpio45 = GPIO_RESET_PWROK,
339 .gpio46 = GPIO_RESET_PWROK,
340 .gpio47 = GPIO_RESET_PWROK,
341 .gpio48 = GPIO_RESET_PWROK,
342 .gpio49 = GPIO_RESET_PWROK,
343 .gpio50 = GPIO_RESET_PWROK,
344 .gpio51 = GPIO_RESET_PWROK,
345 .gpio52 = GPIO_RESET_PWROK,
346 .gpio53 = GPIO_RESET_PWROK,
347 .gpio54 = GPIO_RESET_PWROK,
348 .gpio55 = GPIO_RESET_PWROK,
349 .gpio56 = GPIO_RESET_PWROK,
350 .gpio57 = GPIO_RESET_PWROK,
351 .gpio58 = GPIO_RESET_PWROK,
352 .gpio59 = GPIO_RESET_PWROK,
353 .gpio60 = GPIO_RESET_PWROK,
354 .gpio61 = GPIO_RESET_PWROK,
355 .gpio62 = GPIO_RESET_PWROK,
356 .gpio63 = GPIO_RESET_PWROK,
357};
358
359static const struct pch_gpio_set3 pch_gpio_set3_mode = {
360 .gpio64 = GPIO_MODE_NATIVE, /* Native */
361 .gpio65 = GPIO_MODE_NATIVE, /* Native */
362 .gpio66 = GPIO_MODE_GPIO, /* Unknown Output LOW */
363 .gpio67 = GPIO_MODE_GPIO, /* Unknown Input */
364 .gpio68 = GPIO_MODE_GPIO, /* Unknown Output HIGH */
365 .gpio69 = GPIO_MODE_GPIO, /* Unknown Input */
366 .gpio70 = GPIO_MODE_NATIVE, /* Native */
367 .gpio71 = GPIO_MODE_NATIVE, /* Native */
368 .gpio72 = GPIO_MODE_NATIVE, /* Native */
369 .gpio73 = GPIO_MODE_NATIVE, /* Native */
370 .gpio74 = GPIO_MODE_NATIVE, /* Native */
371 .gpio75 = GPIO_MODE_NATIVE, /* Native */
372};
373
374static const struct pch_gpio_set3 pch_gpio_set3_direction = {
375 .gpio64 = GPIO_DIR_INPUT, /* Native */
376 .gpio65 = GPIO_DIR_INPUT, /* Native */
377 .gpio66 = GPIO_DIR_OUTPUT, /* Unknown Output LOW */
378 .gpio67 = GPIO_DIR_INPUT, /* Unknown Input */
379 .gpio68 = GPIO_DIR_OUTPUT, /* Unknown Output HIGH */
380 .gpio69 = GPIO_DIR_INPUT, /* Unknown Input */
381 .gpio70 = GPIO_DIR_INPUT, /* Native */
382 .gpio71 = GPIO_DIR_INPUT, /* Native */
383 .gpio72 = GPIO_DIR_INPUT, /* Native */
384 .gpio73 = GPIO_DIR_INPUT, /* Native */
385 .gpio74 = GPIO_DIR_INPUT, /* Native */
386 .gpio75 = GPIO_DIR_INPUT, /* Native */
387};
388
389static const struct pch_gpio_set3 pch_gpio_set3_level = {
390 .gpio64 = GPIO_LEVEL_LOW, /* Native */
391 .gpio65 = GPIO_LEVEL_LOW, /* Native */
392 .gpio66 = GPIO_LEVEL_LOW, /* Unknown Output LOW */
393 .gpio67 = GPIO_LEVEL_LOW, /* Unknown Input */
394 .gpio68 = GPIO_LEVEL_HIGH, /* Unknown Output HIGH */
395 .gpio69 = GPIO_LEVEL_LOW, /* Unknown Input */
396 .gpio70 = GPIO_LEVEL_LOW, /* Native */
397 .gpio71 = GPIO_LEVEL_LOW, /* Native */
398 .gpio72 = GPIO_LEVEL_LOW, /* Native */
399 .gpio73 = GPIO_LEVEL_LOW, /* Native */
400 .gpio74 = GPIO_LEVEL_LOW, /* Native */
401 .gpio75 = GPIO_LEVEL_LOW, /* Native */
402};
403
404static const struct pch_gpio_set3 pch_gpio_set3_reset = {
405 .gpio64 = GPIO_RESET_PWROK,
406 .gpio65 = GPIO_RESET_PWROK,
407 .gpio66 = GPIO_RESET_PWROK,
408 .gpio67 = GPIO_RESET_PWROK,
409 .gpio68 = GPIO_RESET_PWROK,
410 .gpio69 = GPIO_RESET_PWROK,
411 .gpio70 = GPIO_RESET_PWROK,
412 .gpio71 = GPIO_RESET_PWROK,
413 .gpio72 = GPIO_RESET_PWROK,
414 .gpio73 = GPIO_RESET_PWROK,
415 .gpio74 = GPIO_RESET_PWROK,
416 .gpio75 = GPIO_RESET_PWROK,
417};
418
419const struct pch_gpio_map mainboard_gpio_map = {
420 .set1 = {
421 .mode = &pch_gpio_set1_mode,
422 .direction = &pch_gpio_set1_direction,
423 .level = &pch_gpio_set1_level,
424 .reset = &pch_gpio_set1_reset,
425 .invert = &pch_gpio_set1_invert,
426 .blink = &pch_gpio_set1_blink,
427 },
428 .set2 = {
429 .mode = &pch_gpio_set2_mode,
430 .direction = &pch_gpio_set2_direction,
431 .level = &pch_gpio_set2_level,
432 .reset = &pch_gpio_set2_reset,
433 },
434 .set3 = {
435 .mode = &pch_gpio_set3_mode,
436 .direction = &pch_gpio_set3_direction,
437 .level = &pch_gpio_set3_level,
438 .reset = &pch_gpio_set3_reset,
439 },
440};