blob: fe3e9f5193273aab7e72a13857d85cc450b07330 [file] [log] [blame]
Vladimir Serbinenko9bf05de2013-11-14 19:11:19 +01001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2013 Vladimir Serbinenko
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
Vladimir Serbinenko9bf05de2013-11-14 19:11:19 +010014 */
15
16#ifndef LENOVO_X201_GPIO_H
17#define LENOVO_X201_GPIO_H
18
Patrick Rudolphe8e66f42016-02-06 17:42:42 +010019#include <southbridge/intel/common/gpio.h>
Vladimir Serbinenko9bf05de2013-11-14 19:11:19 +010020
21const struct pch_gpio_set1 pch_gpio_set1_mode = {
22 .gpio0 = GPIO_MODE_GPIO,
23 .gpio1 = GPIO_MODE_GPIO,
24 .gpio2 = GPIO_MODE_GPIO,
25 .gpio3 = GPIO_MODE_GPIO,
26 .gpio4 = GPIO_MODE_GPIO,
27 .gpio5 = GPIO_MODE_GPIO,
28 .gpio6 = GPIO_MODE_GPIO,
29 .gpio7 = GPIO_MODE_GPIO,
30 .gpio8 = GPIO_MODE_GPIO,
31 .gpio9 = GPIO_MODE_NATIVE,
32 .gpio10 = GPIO_MODE_GPIO,
33 .gpio11 = GPIO_MODE_NATIVE,
34 .gpio12 = GPIO_MODE_NATIVE,
35 .gpio13 = GPIO_MODE_GPIO,
36 .gpio14 = GPIO_MODE_NATIVE,
37 .gpio15 = GPIO_MODE_GPIO,
38 .gpio16 = GPIO_MODE_GPIO,
39 .gpio17 = GPIO_MODE_GPIO,
40 .gpio18 = GPIO_MODE_NATIVE,
41 .gpio19 = GPIO_MODE_NATIVE,
42 .gpio20 = GPIO_MODE_NATIVE,
43 .gpio21 = GPIO_MODE_GPIO,
44 .gpio22 = GPIO_MODE_GPIO,
45 .gpio23 = GPIO_MODE_NATIVE,
46 .gpio24 = GPIO_MODE_GPIO,
47 .gpio25 = GPIO_MODE_NATIVE,
48 .gpio26 = GPIO_MODE_NATIVE,
49 .gpio27 = GPIO_MODE_GPIO,
50 .gpio28 = GPIO_MODE_GPIO,
51 .gpio29 = GPIO_MODE_NATIVE,
52 .gpio30 = GPIO_MODE_NATIVE,
53 .gpio31 = GPIO_MODE_NATIVE,
54};
55
56const struct pch_gpio_set1 pch_gpio_set1_reset = {
57 .gpio0 = GPIO_RESET_PWROK,
58 .gpio1 = GPIO_RESET_PWROK,
59 .gpio2 = GPIO_RESET_PWROK,
60 .gpio3 = GPIO_RESET_PWROK,
61 .gpio4 = GPIO_RESET_PWROK,
62 .gpio5 = GPIO_RESET_PWROK,
63 .gpio6 = GPIO_RESET_PWROK,
64 .gpio7 = GPIO_RESET_PWROK,
65 .gpio8 = GPIO_RESET_PWROK,
66 .gpio9 = GPIO_RESET_PWROK,
67 .gpio10 = GPIO_RESET_PWROK,
68 .gpio11 = GPIO_RESET_PWROK,
69 .gpio12 = GPIO_RESET_PWROK,
70 .gpio13 = GPIO_RESET_PWROK,
71 .gpio14 = GPIO_RESET_PWROK,
72 .gpio15 = GPIO_RESET_PWROK,
73 .gpio16 = GPIO_RESET_PWROK,
74 .gpio17 = GPIO_RESET_PWROK,
75 .gpio18 = GPIO_RESET_PWROK,
76 .gpio19 = GPIO_RESET_PWROK,
77 .gpio20 = GPIO_RESET_PWROK,
78 .gpio21 = GPIO_RESET_PWROK,
79 .gpio22 = GPIO_RESET_PWROK,
80 .gpio23 = GPIO_RESET_PWROK,
81 .gpio24 = GPIO_RESET_RSMRST,
82 .gpio25 = GPIO_RESET_PWROK,
83 .gpio26 = GPIO_RESET_PWROK,
84 .gpio27 = GPIO_RESET_PWROK,
85 .gpio28 = GPIO_RESET_PWROK,
86 .gpio29 = GPIO_RESET_PWROK,
87 .gpio30 = GPIO_RESET_RSMRST,
88 .gpio31 = GPIO_RESET_PWROK,
89};
90
91const struct pch_gpio_set1 pch_gpio_set1_direction = {
92 .gpio0 = GPIO_DIR_INPUT,
93 .gpio1 = GPIO_DIR_INPUT,
94 .gpio2 = GPIO_DIR_INPUT,
95 .gpio3 = GPIO_DIR_INPUT,
96 .gpio4 = GPIO_DIR_INPUT,
97 .gpio5 = GPIO_DIR_INPUT,
98 .gpio6 = GPIO_DIR_INPUT,
99 .gpio7 = GPIO_DIR_INPUT,
100 .gpio8 = GPIO_DIR_OUTPUT,
101 .gpio9 = GPIO_DIR_INPUT,
102 .gpio10 = GPIO_DIR_OUTPUT,
103 .gpio11 = GPIO_DIR_INPUT,
104 .gpio12 = GPIO_DIR_OUTPUT,
105 .gpio13 = GPIO_DIR_INPUT,
106 .gpio14 = GPIO_DIR_INPUT,
107 .gpio15 = GPIO_DIR_OUTPUT,
108 .gpio16 = GPIO_DIR_INPUT,
109 .gpio17 = GPIO_DIR_INPUT,
110 .gpio18 = GPIO_DIR_INPUT,
111 .gpio19 = GPIO_DIR_INPUT,
112 .gpio20 = GPIO_DIR_INPUT,
113 .gpio21 = GPIO_DIR_INPUT,
114 .gpio22 = GPIO_DIR_OUTPUT,
115 .gpio23 = GPIO_DIR_INPUT,
116 .gpio24 = GPIO_DIR_INPUT,
117 .gpio25 = GPIO_DIR_INPUT,
118 .gpio26 = GPIO_DIR_INPUT,
119 .gpio27 = GPIO_DIR_OUTPUT,
120 .gpio28 = GPIO_DIR_OUTPUT,
121 .gpio29 = GPIO_DIR_OUTPUT,
122 .gpio30 = GPIO_DIR_OUTPUT,
123 .gpio31 = GPIO_DIR_INPUT,
124};
125
126const struct pch_gpio_set1 pch_gpio_set1_level = {
127 .gpio0 = GPIO_LEVEL_HIGH,
128 .gpio1 = GPIO_LEVEL_HIGH,
129 .gpio2 = GPIO_LEVEL_HIGH,
130 .gpio3 = GPIO_LEVEL_HIGH,
131 .gpio4 = GPIO_LEVEL_HIGH,
132 .gpio5 = GPIO_LEVEL_HIGH,
133 .gpio6 = GPIO_LEVEL_HIGH,
134 .gpio7 = GPIO_LEVEL_HIGH,
135 .gpio8 = GPIO_LEVEL_HIGH,
136 .gpio9 = GPIO_LEVEL_HIGH,
137 .gpio10 = GPIO_LEVEL_HIGH,
138 .gpio11 = GPIO_LEVEL_HIGH,
139 .gpio12 = GPIO_LEVEL_HIGH,
140 .gpio13 = GPIO_LEVEL_HIGH,
141 .gpio14 = GPIO_LEVEL_HIGH,
142 .gpio15 = GPIO_LEVEL_HIGH,
143 .gpio16 = GPIO_LEVEL_HIGH,
144 .gpio17 = GPIO_LEVEL_HIGH,
145 .gpio18 = GPIO_LEVEL_HIGH,
146 .gpio19 = GPIO_LEVEL_HIGH,
147 .gpio20 = GPIO_LEVEL_HIGH,
148 .gpio21 = GPIO_LEVEL_HIGH,
149 .gpio22 = GPIO_LEVEL_HIGH,
150 .gpio23 = GPIO_LEVEL_HIGH,
151 .gpio24 = GPIO_LEVEL_HIGH,
152 .gpio25 = GPIO_LEVEL_HIGH,
153 .gpio26 = GPIO_LEVEL_HIGH,
154 .gpio27 = GPIO_LEVEL_HIGH,
Vladimir Serbinenkof319ae42014-08-19 00:48:39 +0200155 .gpio28 = GPIO_LEVEL_LOW,
Vladimir Serbinenko9bf05de2013-11-14 19:11:19 +0100156 .gpio29 = GPIO_LEVEL_HIGH,
157 .gpio30 = GPIO_LEVEL_HIGH,
158 .gpio31 = GPIO_LEVEL_HIGH,
159};
160
161const struct pch_gpio_set1 pch_gpio_set1_blink = {
162 .gpio0 = GPIO_NO_BLINK,
163 .gpio1 = GPIO_NO_BLINK,
164 .gpio2 = GPIO_NO_BLINK,
165 .gpio3 = GPIO_NO_BLINK,
166 .gpio4 = GPIO_NO_BLINK,
167 .gpio5 = GPIO_NO_BLINK,
168 .gpio6 = GPIO_NO_BLINK,
169 .gpio7 = GPIO_NO_BLINK,
170 .gpio8 = GPIO_NO_BLINK,
171 .gpio9 = GPIO_NO_BLINK,
172 .gpio10 = GPIO_NO_BLINK,
173 .gpio11 = GPIO_NO_BLINK,
174 .gpio12 = GPIO_NO_BLINK,
175 .gpio13 = GPIO_NO_BLINK,
176 .gpio14 = GPIO_NO_BLINK,
177 .gpio15 = GPIO_NO_BLINK,
178 .gpio16 = GPIO_NO_BLINK,
179 .gpio17 = GPIO_NO_BLINK,
180 .gpio18 = GPIO_NO_BLINK,
181 .gpio19 = GPIO_NO_BLINK,
182 .gpio20 = GPIO_NO_BLINK,
183 .gpio21 = GPIO_NO_BLINK,
184 .gpio22 = GPIO_NO_BLINK,
185 .gpio23 = GPIO_NO_BLINK,
186 .gpio24 = GPIO_NO_BLINK,
187 .gpio25 = GPIO_NO_BLINK,
188 .gpio26 = GPIO_NO_BLINK,
189 .gpio27 = GPIO_NO_BLINK,
190 .gpio28 = GPIO_NO_BLINK,
191 .gpio29 = GPIO_NO_BLINK,
192 .gpio30 = GPIO_NO_BLINK,
193 .gpio31 = GPIO_NO_BLINK,
194};
195
196const struct pch_gpio_set1 pch_gpio_set1_invert = {
197 .gpio0 = GPIO_NO_INVERT,
198 .gpio1 = GPIO_INVERT,
199 .gpio2 = GPIO_INVERT,
200 .gpio3 = GPIO_NO_INVERT,
201 .gpio4 = GPIO_NO_INVERT,
202 .gpio5 = GPIO_NO_INVERT,
203 .gpio6 = GPIO_INVERT,
204 .gpio7 = GPIO_INVERT,
205 .gpio8 = GPIO_NO_INVERT,
206 .gpio9 = GPIO_NO_INVERT,
207 .gpio10 = GPIO_NO_INVERT,
208 .gpio11 = GPIO_NO_INVERT,
209 .gpio12 = GPIO_NO_INVERT,
210 .gpio13 = GPIO_INVERT,
211 .gpio14 = GPIO_NO_INVERT,
212 .gpio15 = GPIO_NO_INVERT,
213 .gpio16 = GPIO_INVERT,
214 .gpio17 = GPIO_NO_INVERT,
215 .gpio18 = GPIO_NO_INVERT,
216 .gpio19 = GPIO_NO_INVERT,
217 .gpio20 = GPIO_NO_INVERT,
218 .gpio21 = GPIO_NO_INVERT,
219 .gpio22 = GPIO_NO_INVERT,
220 .gpio23 = GPIO_NO_INVERT,
221 .gpio24 = GPIO_NO_INVERT,
222 .gpio25 = GPIO_NO_INVERT,
223 .gpio26 = GPIO_NO_INVERT,
224 .gpio27 = GPIO_NO_INVERT,
225 .gpio28 = GPIO_NO_INVERT,
226 .gpio29 = GPIO_NO_INVERT,
227 .gpio30 = GPIO_NO_INVERT,
228 .gpio31 = GPIO_NO_INVERT,
229};
230
231const struct pch_gpio_set2 pch_gpio_set2_mode = {
232 .gpio32 = GPIO_MODE_NATIVE,
233 .gpio33 = GPIO_MODE_GPIO,
234 .gpio34 = GPIO_MODE_GPIO,
235 .gpio35 = GPIO_MODE_GPIO,
236 .gpio36 = GPIO_MODE_GPIO,
237 .gpio37 = GPIO_MODE_GPIO,
238 .gpio38 = GPIO_MODE_GPIO,
239 .gpio39 = GPIO_MODE_GPIO,
240 .gpio40 = GPIO_MODE_NATIVE,
241 .gpio41 = GPIO_MODE_GPIO,
242 .gpio42 = GPIO_MODE_GPIO,
243 .gpio43 = GPIO_MODE_NATIVE,
244 .gpio44 = GPIO_MODE_NATIVE,
245 .gpio45 = GPIO_MODE_NATIVE,
246 .gpio46 = GPIO_MODE_NATIVE,
247 .gpio47 = GPIO_MODE_NATIVE,
248 .gpio48 = GPIO_MODE_GPIO,
249 .gpio49 = GPIO_MODE_GPIO,
250 .gpio50 = GPIO_MODE_GPIO,
251 .gpio51 = GPIO_MODE_NATIVE,
252 .gpio52 = GPIO_MODE_GPIO,
253 .gpio53 = GPIO_MODE_GPIO,
254 .gpio54 = GPIO_MODE_GPIO,
255 .gpio55 = GPIO_MODE_NATIVE,
256 .gpio56 = GPIO_MODE_NATIVE,
257 .gpio57 = GPIO_MODE_GPIO,
258 .gpio58 = GPIO_MODE_NATIVE,
259 .gpio59 = GPIO_MODE_NATIVE,
260 .gpio60 = GPIO_MODE_NATIVE,
261 .gpio61 = GPIO_MODE_NATIVE,
262 .gpio62 = GPIO_MODE_NATIVE,
263 .gpio63 = GPIO_MODE_NATIVE,
264};
265
266const struct pch_gpio_set2 pch_gpio_set2_direction = {
267 .gpio32 = GPIO_DIR_OUTPUT,
268 .gpio33 = GPIO_DIR_OUTPUT,
269 .gpio34 = GPIO_DIR_INPUT,
270 .gpio35 = GPIO_DIR_OUTPUT,
271 .gpio36 = GPIO_DIR_INPUT,
272 .gpio37 = GPIO_DIR_INPUT,
273 .gpio38 = GPIO_DIR_INPUT,
274 .gpio39 = GPIO_DIR_INPUT,
275 .gpio40 = GPIO_DIR_INPUT,
276 .gpio41 = GPIO_DIR_OUTPUT,
277 .gpio42 = GPIO_DIR_OUTPUT,
278 .gpio43 = GPIO_DIR_INPUT,
279 .gpio44 = GPIO_DIR_INPUT,
280 .gpio45 = GPIO_DIR_INPUT,
281 .gpio46 = GPIO_DIR_INPUT,
282 .gpio47 = GPIO_DIR_INPUT,
283 .gpio48 = GPIO_DIR_INPUT,
284 .gpio49 = GPIO_DIR_OUTPUT,
285 .gpio50 = GPIO_DIR_OUTPUT,
286 .gpio51 = GPIO_DIR_OUTPUT,
287 .gpio52 = GPIO_DIR_OUTPUT,
288 .gpio53 = GPIO_DIR_OUTPUT,
289 .gpio54 = GPIO_DIR_OUTPUT,
290 .gpio55 = GPIO_DIR_OUTPUT,
291 .gpio56 = GPIO_DIR_INPUT,
292 .gpio57 = GPIO_DIR_INPUT,
293 .gpio58 = GPIO_DIR_OUTPUT,
294 .gpio59 = GPIO_DIR_INPUT,
295 .gpio60 = GPIO_DIR_INPUT,
296 .gpio61 = GPIO_DIR_OUTPUT,
297 .gpio62 = GPIO_DIR_OUTPUT,
298 .gpio63 = GPIO_DIR_OUTPUT,
299};
300
301const struct pch_gpio_set2 pch_gpio_set2_level = {
302 .gpio32 = GPIO_LEVEL_HIGH,
303 .gpio33 = GPIO_LEVEL_HIGH,
304 .gpio34 = GPIO_LEVEL_HIGH,
305 .gpio35 = GPIO_LEVEL_HIGH,
306 .gpio36 = GPIO_LEVEL_HIGH,
307 .gpio37 = GPIO_LEVEL_HIGH,
308 .gpio38 = GPIO_LEVEL_HIGH,
309 .gpio39 = GPIO_LEVEL_HIGH,
310 .gpio40 = GPIO_LEVEL_HIGH,
311 .gpio41 = GPIO_LEVEL_HIGH,
312 .gpio42 = GPIO_LEVEL_HIGH,
313 .gpio43 = GPIO_LEVEL_HIGH,
314 .gpio44 = GPIO_LEVEL_HIGH,
315 .gpio45 = GPIO_LEVEL_HIGH,
316 .gpio46 = GPIO_LEVEL_HIGH,
317 .gpio47 = GPIO_LEVEL_HIGH,
318 .gpio48 = GPIO_LEVEL_HIGH,
319 .gpio49 = GPIO_LEVEL_HIGH,
320 .gpio50 = GPIO_LEVEL_HIGH,
321 .gpio51 = GPIO_LEVEL_HIGH,
322 .gpio52 = GPIO_LEVEL_HIGH,
323 .gpio53 = GPIO_LEVEL_LOW,
324 .gpio54 = GPIO_LEVEL_LOW,
325 .gpio55 = GPIO_LEVEL_HIGH,
326 .gpio56 = GPIO_LEVEL_LOW,
327 .gpio57 = GPIO_LEVEL_HIGH,
328 .gpio58 = GPIO_LEVEL_LOW,
329 .gpio59 = GPIO_LEVEL_LOW,
330 .gpio60 = GPIO_LEVEL_LOW,
331 .gpio61 = GPIO_LEVEL_LOW,
332 .gpio62 = GPIO_LEVEL_LOW,
333 .gpio63 = GPIO_LEVEL_LOW,
334};
335
336const struct pch_gpio_set3 pch_gpio_set3_mode = {
337 .gpio64 = GPIO_MODE_NATIVE,
338 .gpio65 = GPIO_MODE_NATIVE,
339 .gpio66 = GPIO_MODE_NATIVE,
340 .gpio67 = GPIO_MODE_NATIVE,
341 .gpio68 = GPIO_MODE_NATIVE,
342 .gpio69 = GPIO_MODE_NATIVE,
343 .gpio70 = GPIO_MODE_NATIVE,
344 .gpio71 = GPIO_MODE_NATIVE,
345 .gpio72 = GPIO_MODE_NATIVE,
346 .gpio73 = GPIO_MODE_NATIVE,
347 .gpio74 = GPIO_MODE_NATIVE,
348 .gpio75 = GPIO_MODE_NATIVE,
349};
350
351const struct pch_gpio_set3 pch_gpio_set3_direction = {
352 .gpio64 = GPIO_DIR_OUTPUT,
353 .gpio65 = GPIO_DIR_OUTPUT,
354 .gpio66 = GPIO_DIR_OUTPUT,
355 .gpio67 = GPIO_DIR_OUTPUT,
356 .gpio68 = GPIO_DIR_OUTPUT,
357 .gpio69 = GPIO_DIR_OUTPUT,
358 .gpio70 = GPIO_DIR_OUTPUT,
359 .gpio71 = GPIO_DIR_OUTPUT,
360 .gpio72 = GPIO_DIR_INPUT,
361 .gpio73 = GPIO_DIR_INPUT,
362 .gpio74 = GPIO_DIR_INPUT,
363 .gpio75 = GPIO_DIR_INPUT,
364};
365
366const struct pch_gpio_set3 pch_gpio_set3_level = {
367 .gpio64 = GPIO_LEVEL_LOW,
368 .gpio65 = GPIO_LEVEL_LOW,
369 .gpio66 = GPIO_LEVEL_LOW,
370 .gpio67 = GPIO_LEVEL_LOW,
371 .gpio68 = GPIO_LEVEL_LOW,
372 .gpio69 = GPIO_LEVEL_LOW,
373 .gpio70 = GPIO_LEVEL_LOW,
374 .gpio71 = GPIO_LEVEL_LOW,
375 .gpio72 = GPIO_LEVEL_LOW,
376 .gpio73 = GPIO_LEVEL_LOW,
377 .gpio74 = GPIO_LEVEL_LOW,
378 .gpio75 = GPIO_LEVEL_LOW,
379};
380
381const struct pch_gpio_map x201_gpio_map = {
382 .set1 = {
383 .mode = &pch_gpio_set1_mode,
384 .direction = &pch_gpio_set1_direction,
385 .level = &pch_gpio_set1_level,
386 .blink = &pch_gpio_set1_blink,
387 .invert = &pch_gpio_set1_invert,
388 },
389 .set2 = {
390 .mode = &pch_gpio_set2_mode,
391 .direction = &pch_gpio_set2_direction,
392 .level = &pch_gpio_set2_level,
393 },
394 .set3 = {
395 .mode = &pch_gpio_set3_mode,
396 .direction = &pch_gpio_set3_direction,
397 .level = &pch_gpio_set3_level,
398 },
399};
400
401#endif