• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
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  */
9 static 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 
44 static 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 
79 static 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 
114 static 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 
149 static 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 
184 static 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 
219 static 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 
254 static 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 
289 static 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 
324 static 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 
359 static 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 
374 static 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 
389 static 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 
404 static 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 
419 const 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 };
441