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