libpayload: configs: Add new config.featuretest to broaden CI
[coreboot.git] / src / mainboard / lenovo / x1_carbon_gen1 / gpio.c
blobddc9e53b31ac998ce56f220804aa272e7f01b6ec
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_NATIVE,
15 .gpio10 = GPIO_MODE_GPIO,
16 .gpio11 = GPIO_MODE_NATIVE,
17 .gpio12 = GPIO_MODE_GPIO,
18 .gpio13 = GPIO_MODE_GPIO,
19 .gpio14 = GPIO_MODE_NATIVE,
20 .gpio15 = GPIO_MODE_GPIO,
21 .gpio16 = GPIO_MODE_NATIVE,
22 .gpio17 = GPIO_MODE_GPIO,
23 .gpio18 = GPIO_MODE_NATIVE,
24 .gpio19 = GPIO_MODE_NATIVE,
25 .gpio20 = GPIO_MODE_NATIVE,
26 .gpio21 = GPIO_MODE_GPIO,
27 .gpio22 = GPIO_MODE_GPIO,
28 .gpio23 = GPIO_MODE_NATIVE,
29 .gpio24 = GPIO_MODE_GPIO,
30 .gpio25 = GPIO_MODE_GPIO,
31 .gpio26 = GPIO_MODE_GPIO,
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_OUTPUT,
49 .gpio9 = GPIO_DIR_INPUT,
50 .gpio10 = GPIO_DIR_OUTPUT,
51 .gpio11 = GPIO_DIR_INPUT,
52 .gpio12 = GPIO_DIR_OUTPUT,
53 .gpio13 = GPIO_DIR_INPUT,
54 .gpio14 = GPIO_DIR_INPUT,
55 .gpio15 = GPIO_DIR_OUTPUT,
56 .gpio16 = GPIO_DIR_INPUT,
57 .gpio17 = GPIO_DIR_INPUT,
58 .gpio18 = GPIO_DIR_INPUT,
59 .gpio19 = GPIO_DIR_INPUT,
60 .gpio20 = GPIO_DIR_INPUT,
61 .gpio21 = GPIO_DIR_INPUT,
62 .gpio22 = GPIO_DIR_OUTPUT,
63 .gpio23 = GPIO_DIR_INPUT,
64 .gpio24 = GPIO_DIR_OUTPUT,
65 .gpio25 = GPIO_DIR_INPUT,
66 .gpio26 = GPIO_DIR_INPUT,
67 .gpio27 = GPIO_DIR_INPUT,
68 .gpio28 = GPIO_DIR_OUTPUT,
69 .gpio29 = GPIO_DIR_OUTPUT,
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_LOW,
78 .gpio3 = GPIO_LEVEL_HIGH,
79 .gpio4 = GPIO_LEVEL_HIGH,
80 .gpio5 = GPIO_LEVEL_HIGH,
81 .gpio6 = GPIO_LEVEL_HIGH,
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_LOW,
88 .gpio13 = GPIO_LEVEL_HIGH,
89 .gpio14 = GPIO_LEVEL_HIGH,
90 .gpio15 = GPIO_LEVEL_LOW,
91 .gpio16 = GPIO_LEVEL_HIGH,
92 .gpio17 = GPIO_LEVEL_HIGH,
93 .gpio18 = GPIO_LEVEL_HIGH,
94 .gpio19 = GPIO_LEVEL_HIGH,
95 .gpio20 = GPIO_LEVEL_HIGH,
96 .gpio21 = GPIO_LEVEL_HIGH,
97 .gpio22 = GPIO_LEVEL_HIGH,
98 .gpio23 = GPIO_LEVEL_HIGH,
99 .gpio24 = GPIO_LEVEL_LOW,
100 .gpio25 = GPIO_LEVEL_LOW,
101 .gpio26 = GPIO_LEVEL_LOW,
102 .gpio27 = GPIO_LEVEL_LOW,
103 .gpio28 = GPIO_LEVEL_LOW,
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_PWROK,
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_NO_INVERT,
150 .gpio5 = GPIO_NO_INVERT,
151 .gpio6 = GPIO_INVERT,
152 .gpio7 = GPIO_NO_INVERT,
153 .gpio8 = GPIO_NO_INVERT,
154 .gpio9 = GPIO_NO_INVERT,
155 .gpio10 = GPIO_NO_INVERT,
156 .gpio11 = GPIO_NO_INVERT,
157 .gpio12 = GPIO_NO_INVERT,
158 .gpio13 = GPIO_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_NATIVE,
224 .gpio41 = GPIO_MODE_GPIO,
225 .gpio42 = GPIO_MODE_NATIVE,
226 .gpio43 = GPIO_MODE_GPIO,
227 .gpio44 = GPIO_MODE_GPIO,
228 .gpio45 = GPIO_MODE_GPIO,
229 .gpio46 = GPIO_MODE_NATIVE,
230 .gpio47 = GPIO_MODE_NATIVE,
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_NATIVE,
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_INPUT,
251 .gpio33 = GPIO_DIR_OUTPUT,
252 .gpio34 = GPIO_DIR_INPUT,
253 .gpio35 = GPIO_DIR_INPUT,
254 .gpio36 = GPIO_DIR_INPUT,
255 .gpio37 = GPIO_DIR_INPUT,
256 .gpio38 = GPIO_DIR_INPUT,
257 .gpio39 = GPIO_DIR_INPUT,
258 .gpio40 = GPIO_DIR_INPUT,
259 .gpio41 = GPIO_DIR_INPUT,
260 .gpio42 = GPIO_DIR_INPUT,
261 .gpio43 = GPIO_DIR_OUTPUT,
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_OUTPUT,
270 .gpio52 = GPIO_DIR_OUTPUT,
271 .gpio53 = GPIO_DIR_OUTPUT,
272 .gpio54 = GPIO_DIR_INPUT,
273 .gpio55 = GPIO_DIR_OUTPUT,
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_HIGH,
286 .gpio33 = GPIO_LEVEL_HIGH,
287 .gpio34 = GPIO_LEVEL_LOW,
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_HIGH,
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_HIGH,
303 .gpio50 = GPIO_LEVEL_HIGH,
304 .gpio51 = GPIO_LEVEL_HIGH,
305 .gpio52 = GPIO_LEVEL_HIGH,
306 .gpio53 = GPIO_LEVEL_HIGH,
307 .gpio54 = GPIO_LEVEL_HIGH,
308 .gpio55 = GPIO_LEVEL_HIGH,
309 .gpio56 = GPIO_LEVEL_LOW,
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_NATIVE,
365 .gpio74 = GPIO_MODE_NATIVE,
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_LOW,
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 = {
415 .set1 = {
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,
423 .set2 = {
424 .mode = &pch_gpio_set2_mode,
425 .direction = &pch_gpio_set2_direction,
426 .level = &pch_gpio_set2_level,
427 .reset = &pch_gpio_set2_reset,
429 .set3 = {
430 .mode = &pch_gpio_set3_mode,
431 .direction = &pch_gpio_set3_direction,
432 .level = &pch_gpio_set3_level,
433 .reset = &pch_gpio_set3_reset,