blob: eb01c8c3b7304ebb20aaae8aa401ad5d8a59be8c [file] [log] [blame]
Angel Ponsd32b6de2020-04-03 01:23:13 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauere1ae4b22012-04-27 23:20:58 +02002
3#ifndef STUMPY_GPIO_H
4#define STUMPY_GPIO_H
5
Patrick Rudolphe8e66f42016-02-06 17:42:42 +01006#include <southbridge/intel/common/gpio.h>
Stefan Reinauere1ae4b22012-04-27 23:20:58 +02007
8/*
9 * GPIO SET 1 includes GPIO0 to GPIO31
10 */
11
Peter Lemenkov6752b6152019-06-15 21:39:32 +020012static const struct pch_gpio_set1 pch_gpio_set1_mode = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020013 .gpio0 = GPIO_MODE_GPIO, /* CHP3_SERDBG */
14 .gpio1 = GPIO_MODE_GPIO, /* SIO3_EXTSMI# */
15 .gpio2 = GPIO_MODE_NONE,
16 .gpio3 = GPIO_MODE_NONE,
17 .gpio4 = GPIO_MODE_NONE,
18 .gpio5 = GPIO_MODE_NONE,
19 .gpio6 = GPIO_MODE_NONE,
20 .gpio7 = GPIO_MODE_NONE,
21 .gpio8 = GPIO_MODE_GPIO, /* CHP3_INTELBT_OFF# */
22 .gpio9 = GPIO_MODE_NATIVE, /* USB_OC13# */
23 .gpio10 = GPIO_MODE_NATIVE, /* USB_OC12# */
24 .gpio11 = GPIO_MODE_NONE,
25 .gpio12 = GPIO_MODE_NONE,
26 .gpio13 = GPIO_MODE_GPIO, /* CHP3_DEBUG13 */
27 .gpio14 = GPIO_MODE_GPIO, /* SIO3_WAKESCI# */
28 .gpio15 = GPIO_MODE_NONE,
29 .gpio16 = GPIO_MODE_NONE,
30 .gpio17 = GPIO_MODE_GPIO, /* KBC3_DVP_MODE */
31 .gpio18 = GPIO_MODE_NATIVE, /* MIN3_CLKREQ1# */
32 .gpio19 = GPIO_MODE_NONE,
33 .gpio20 = GPIO_MODE_NONE,
34 .gpio21 = GPIO_MODE_NONE,
35 .gpio22 = GPIO_MODE_GPIO, /* CHP3_BIOS_CRISIS# */
36 .gpio23 = GPIO_MODE_NONE,
37 .gpio24 = GPIO_MODE_NONE,
38 .gpio25 = GPIO_MODE_NATIVE, /* MIN3_CLKREQ3# */
39 .gpio26 = GPIO_MODE_NATIVE, /* LAN3_CLKREQ# */
40 .gpio27 = GPIO_MODE_NONE,
41 .gpio28 = GPIO_MODE_NONE,
42 .gpio29 = GPIO_MODE_NONE,
43 .gpio30 = GPIO_MODE_NATIVE, /* CHP3_SUSWARN# */
44 .gpio31 = GPIO_MODE_NATIVE, /* ACPRESENT (pullup) */
45};
46
Peter Lemenkov6752b6152019-06-15 21:39:32 +020047static const struct pch_gpio_set1 pch_gpio_set1_direction = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020048 .gpio0 = GPIO_DIR_OUTPUT,
49 .gpio1 = GPIO_DIR_INPUT,
50 .gpio2 = GPIO_DIR_INPUT,
51 .gpio3 = GPIO_DIR_INPUT,
52 .gpio4 = GPIO_DIR_INPUT,
53 .gpio5 = GPIO_DIR_INPUT,
54 .gpio6 = GPIO_DIR_INPUT,
55 .gpio7 = GPIO_DIR_INPUT,
56 .gpio8 = GPIO_DIR_OUTPUT,
57 .gpio9 = GPIO_DIR_INPUT,
58 .gpio10 = GPIO_DIR_INPUT,
59 .gpio11 = GPIO_DIR_INPUT,
60 .gpio12 = GPIO_DIR_INPUT,
61 .gpio13 = GPIO_DIR_INPUT,
62 .gpio14 = GPIO_DIR_INPUT,
63 .gpio15 = GPIO_DIR_INPUT,
64 .gpio16 = GPIO_DIR_INPUT,
65 .gpio17 = GPIO_DIR_INPUT,
66 .gpio18 = GPIO_DIR_INPUT,
67 .gpio19 = GPIO_DIR_INPUT,
68 .gpio20 = GPIO_DIR_INPUT,
69 .gpio21 = GPIO_DIR_INPUT,
70 .gpio22 = GPIO_DIR_OUTPUT,
71 .gpio23 = GPIO_DIR_INPUT,
72 .gpio24 = GPIO_DIR_INPUT,
73 .gpio25 = GPIO_DIR_INPUT,
74 .gpio26 = GPIO_DIR_INPUT,
75 .gpio27 = GPIO_DIR_INPUT,
76 .gpio28 = GPIO_DIR_INPUT,
77 .gpio29 = GPIO_DIR_INPUT,
78 .gpio30 = GPIO_DIR_INPUT,
79 .gpio31 = GPIO_DIR_INPUT,
80};
81
Peter Lemenkov6752b6152019-06-15 21:39:32 +020082static const struct pch_gpio_set1 pch_gpio_set1_level = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +020083 .gpio0 = GPIO_LEVEL_LOW,
84 .gpio1 = GPIO_LEVEL_LOW,
85 .gpio2 = GPIO_LEVEL_LOW,
86 .gpio3 = GPIO_LEVEL_LOW,
87 .gpio4 = GPIO_LEVEL_LOW,
88 .gpio5 = GPIO_LEVEL_LOW,
89 .gpio6 = GPIO_LEVEL_LOW,
90 .gpio7 = GPIO_LEVEL_LOW,
91 .gpio8 = GPIO_LEVEL_HIGH,
92 .gpio9 = GPIO_LEVEL_LOW,
93 .gpio10 = GPIO_LEVEL_LOW,
94 .gpio11 = GPIO_LEVEL_LOW,
95 .gpio12 = GPIO_LEVEL_LOW,
96 .gpio13 = GPIO_LEVEL_LOW,
97 .gpio14 = GPIO_LEVEL_LOW,
98 .gpio15 = GPIO_LEVEL_LOW,
99 .gpio16 = GPIO_LEVEL_LOW,
100 .gpio17 = GPIO_LEVEL_LOW,
101 .gpio18 = GPIO_LEVEL_LOW,
102 .gpio19 = GPIO_LEVEL_LOW,
103 .gpio20 = GPIO_LEVEL_LOW,
104 .gpio21 = GPIO_LEVEL_LOW,
105 .gpio22 = GPIO_LEVEL_HIGH,
106 .gpio23 = GPIO_LEVEL_LOW,
107 .gpio24 = GPIO_LEVEL_LOW,
108 .gpio25 = GPIO_LEVEL_LOW,
109 .gpio26 = GPIO_LEVEL_LOW,
110 .gpio27 = GPIO_LEVEL_LOW,
111 .gpio28 = GPIO_LEVEL_LOW,
112 .gpio29 = GPIO_LEVEL_LOW,
113 .gpio30 = GPIO_LEVEL_LOW,
114 .gpio31 = GPIO_LEVEL_LOW,
115};
116
117/*
118 * GPIO SET 2 includes GPIO32 to GPIO63
119 */
120
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200121static const struct pch_gpio_set2 pch_gpio_set2_mode = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200122 .gpio32 = GPIO_MODE_NATIVE, /* PCI3_CLKRUN# */
123 .gpio33 = GPIO_MODE_NONE,
124 .gpio34 = GPIO_MODE_NONE,
125 .gpio35 = GPIO_MODE_GPIO, /* CHP3_WLAN_OFF# */
126 .gpio36 = GPIO_MODE_GPIO,
127 .gpio37 = GPIO_MODE_GPIO, /* CHP3_FDI_OVRVLTG */
128 .gpio38 = GPIO_MODE_NONE,
129 .gpio39 = GPIO_MODE_NONE,
130 .gpio40 = GPIO_MODE_NATIVE, /* USB3_OC1# */
131 .gpio41 = GPIO_MODE_NATIVE, /* USB3_OC4# */
132 .gpio42 = GPIO_MODE_GPIO, /* CHP3_REC_MODE# */
133 .gpio43 = GPIO_MODE_NATIVE, /* USB3_OC8# */
134 .gpio44 = GPIO_MODE_GPIO, /* CHP3_SMRT_CHG0_CTL2# */
135 .gpio45 = GPIO_MODE_GPIO, /* CHP3_SMRT_CHG0_CTL3# */
136 .gpio46 = GPIO_MODE_GPIO, /* CHP3_SMRT_CHG4_CTL2# */
137 .gpio47 = GPIO_MODE_GPIO, /* CHP3_CHG_ENABLE0 */
138 .gpio48 = GPIO_MODE_GPIO, /* CHP3_BT_OFF# */
139 .gpio49 = GPIO_MODE_NONE,
140 .gpio50 = GPIO_MODE_NONE,
141 .gpio51 = GPIO_MODE_NONE,
142 .gpio52 = GPIO_MODE_NONE,
143 .gpio53 = GPIO_MODE_NATIVE,
144 .gpio54 = GPIO_MODE_NONE,
145 .gpio55 = GPIO_MODE_GPIO, /* STP_A16OVR */
146 .gpio56 = GPIO_MODE_GPIO, /* CHP3_CHG_ENABLE4 */
147 .gpio57 = GPIO_MODE_GPIO, /* CHP3_DEBUG10 */
148 .gpio58 = GPIO_MODE_NATIVE, /* SIO3_THERM_SMCLK# */
149 .gpio59 = GPIO_MODE_NATIVE, /* USB3_OC0# */
150 .gpio60 = GPIO_MODE_GPIO, /* CHP3_DRAMRST_GATE */
151 .gpio61 = GPIO_MODE_NONE,
152 .gpio62 = GPIO_MODE_NATIVE, /* CHP3_SUSCLK */
153 .gpio63 = GPIO_MODE_NATIVE, /* CHP3_SLPS5# */
154};
155
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200156static const struct pch_gpio_set2 pch_gpio_set2_direction = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200157 .gpio32 = GPIO_DIR_INPUT,
158 .gpio33 = GPIO_DIR_INPUT,
159 .gpio34 = GPIO_DIR_INPUT,
160 .gpio35 = GPIO_DIR_OUTPUT,
161 .gpio36 = GPIO_DIR_INPUT,
162 .gpio37 = GPIO_DIR_INPUT,
163 .gpio38 = GPIO_DIR_INPUT,
164 .gpio39 = GPIO_DIR_INPUT,
165 .gpio40 = GPIO_DIR_INPUT,
166 .gpio41 = GPIO_DIR_INPUT,
167 .gpio42 = GPIO_DIR_INPUT,
168 .gpio43 = GPIO_DIR_INPUT,
169 .gpio44 = GPIO_DIR_OUTPUT,
170 .gpio45 = GPIO_DIR_OUTPUT,
171 .gpio46 = GPIO_DIR_OUTPUT,
172 .gpio47 = GPIO_DIR_OUTPUT,
173 .gpio48 = GPIO_DIR_OUTPUT,
174 .gpio49 = GPIO_DIR_INPUT,
175 .gpio50 = GPIO_DIR_INPUT,
176 .gpio51 = GPIO_DIR_INPUT,
177 .gpio52 = GPIO_DIR_INPUT,
178 .gpio53 = GPIO_DIR_INPUT,
179 .gpio54 = GPIO_DIR_INPUT,
180 .gpio55 = GPIO_DIR_INPUT,
181 .gpio56 = GPIO_DIR_OUTPUT,
182 .gpio57 = GPIO_DIR_OUTPUT,
183 .gpio58 = GPIO_DIR_INPUT,
184 .gpio59 = GPIO_DIR_INPUT,
185 .gpio60 = GPIO_DIR_OUTPUT,
186 .gpio61 = GPIO_DIR_INPUT,
187 .gpio62 = GPIO_DIR_INPUT,
188 .gpio63 = GPIO_DIR_INPUT,
189};
190
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200191static const struct pch_gpio_set2 pch_gpio_set2_level = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200192 .gpio32 = GPIO_LEVEL_LOW,
193 .gpio33 = GPIO_LEVEL_LOW,
194 .gpio34 = GPIO_LEVEL_LOW,
195 .gpio35 = GPIO_LEVEL_HIGH,
196 .gpio36 = GPIO_LEVEL_LOW,
197 .gpio37 = GPIO_LEVEL_LOW,
198 .gpio38 = GPIO_LEVEL_LOW,
199 .gpio39 = GPIO_LEVEL_LOW,
200 .gpio40 = GPIO_LEVEL_LOW,
201 .gpio41 = GPIO_LEVEL_LOW,
202 .gpio42 = GPIO_LEVEL_LOW,
203 .gpio43 = GPIO_LEVEL_LOW,
204 .gpio44 = GPIO_LEVEL_HIGH,
205 .gpio45 = GPIO_LEVEL_LOW,
206 .gpio46 = GPIO_LEVEL_HIGH,
207 .gpio47 = GPIO_LEVEL_HIGH,
208 .gpio48 = GPIO_LEVEL_HIGH,
209 .gpio49 = GPIO_LEVEL_LOW,
210 .gpio50 = GPIO_LEVEL_LOW,
211 .gpio51 = GPIO_LEVEL_LOW,
212 .gpio52 = GPIO_LEVEL_LOW,
213 .gpio53 = GPIO_LEVEL_LOW,
214 .gpio54 = GPIO_LEVEL_LOW,
215 .gpio55 = GPIO_LEVEL_LOW,
216 .gpio56 = GPIO_LEVEL_HIGH,
217 .gpio57 = GPIO_LEVEL_LOW,
218 .gpio58 = GPIO_LEVEL_LOW,
219 .gpio59 = GPIO_LEVEL_LOW,
220 .gpio60 = GPIO_LEVEL_HIGH,
221 .gpio61 = GPIO_LEVEL_LOW,
222 .gpio62 = GPIO_LEVEL_LOW,
223 .gpio63 = GPIO_LEVEL_LOW,
224};
225
226/*
227 * GPIO SET 3 includes GPIO64 to GPIO75
228 */
229
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200230static const struct pch_gpio_set3 pch_gpio_set3_mode = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200231 .gpio64 = GPIO_MODE_NATIVE, /* CLK3_SIO48 */
232 .gpio65 = GPIO_MODE_NONE,
233 .gpio66 = GPIO_MODE_NONE,
234 .gpio67 = GPIO_MODE_NONE,
235 .gpio68 = GPIO_MODE_GPIO, /* CHP3_SPI_WP */
236 .gpio69 = GPIO_MODE_NONE,
237 .gpio70 = GPIO_MODE_NONE,
238 .gpio71 = GPIO_MODE_NONE,
239 .gpio72 = GPIO_MODE_NATIVE, /* BATLOW# (pullup) */
240 .gpio73 = GPIO_MODE_GPIO, /* CHP3_SMRT_CHG4_CTL3# */
241 .gpio74 = GPIO_MODE_NONE,
242 .gpio75 = GPIO_MODE_NATIVE, /* SIO3_THERM_SMDATA# */
243};
244
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200245static const struct pch_gpio_set3 pch_gpio_set3_direction = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200246 .gpio64 = GPIO_DIR_INPUT,
247 .gpio65 = GPIO_DIR_INPUT,
248 .gpio66 = GPIO_DIR_INPUT,
249 .gpio67 = GPIO_DIR_INPUT,
250 .gpio68 = GPIO_DIR_INPUT,
251 .gpio69 = GPIO_DIR_INPUT,
252 .gpio70 = GPIO_DIR_INPUT,
253 .gpio71 = GPIO_DIR_INPUT,
254 .gpio72 = GPIO_DIR_INPUT,
255 .gpio73 = GPIO_DIR_OUTPUT,
256 .gpio74 = GPIO_DIR_INPUT,
257 .gpio75 = GPIO_DIR_INPUT,
258};
259
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200260static const struct pch_gpio_set3 pch_gpio_set3_level = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200261 .gpio64 = GPIO_LEVEL_LOW,
262 .gpio65 = GPIO_LEVEL_LOW,
263 .gpio66 = GPIO_LEVEL_LOW,
264 .gpio67 = GPIO_LEVEL_LOW,
265 .gpio68 = GPIO_LEVEL_LOW,
266 .gpio69 = GPIO_LEVEL_LOW,
267 .gpio70 = GPIO_LEVEL_LOW,
268 .gpio71 = GPIO_LEVEL_LOW,
269 .gpio72 = GPIO_LEVEL_LOW,
270 .gpio73 = GPIO_LEVEL_LOW,
271 .gpio74 = GPIO_LEVEL_LOW,
272 .gpio75 = GPIO_LEVEL_LOW,
273};
274
Vladimir Serbinenkoffbb3c02016-02-10 01:36:25 +0100275const struct pch_gpio_map mainboard_gpio_map = {
Stefan Reinauere1ae4b22012-04-27 23:20:58 +0200276 .set1 = {
277 .mode = &pch_gpio_set1_mode,
278 .direction = &pch_gpio_set1_direction,
279 .level = &pch_gpio_set1_level,
280 },
281 .set2 = {
282 .mode = &pch_gpio_set2_mode,
283 .direction = &pch_gpio_set2_direction,
284 .level = &pch_gpio_set2_level,
285 },
286 .set3 = {
287 .mode = &pch_gpio_set3_mode,
288 .direction = &pch_gpio_set3_direction,
289 .level = &pch_gpio_set3_level,
290 },
291};
292
293#endif