blob: 28a510204e721f17869524d2e0e7a735777e0365 [file] [log] [blame]
Nicolas Reinecke2bffa8a2015-10-01 15:34:37 +02001#include <southbridge/intel/common/gpio.h>
2
3static const struct pch_gpio_set1 pch_gpio_set1_mode = {
4 .gpio0 = GPIO_MODE_GPIO, // -USB30_SMIB - input
5 .gpio1 = GPIO_MODE_GPIO, // -EC_SCI - input
6 .gpio2 = GPIO_MODE_GPIO, // -LCD_PRESENCE - input
7 .gpio3 = GPIO_MODE_GPIO, // DOCKID0 - input
8 .gpio4 = GPIO_MODE_GPIO, // DOCKID1 - input
9 .gpio5 = GPIO_MODE_GPIO, // DOCKID2 - input
10 .gpio6 = GPIO_MODE_GPIO, // SYSTEM_DP_HPD - input
11 .gpio7 = GPIO_MODE_GPIO, // pullup
12 .gpio8 = GPIO_MODE_GPIO, // pulldown - INTEGRATED ENABLED(FCIM) 0 / DISABLED (BTM) 1
13 .gpio9 = GPIO_MODE_NATIVE, // OC5 - -USB_PORT9_OC5 - input
14 .gpio10 = GPIO_MODE_GPIO, // DRAMRST_GATE_ON - output
15 .gpio11 = GPIO_MODE_NATIVE, // SMBALERT# pullup
16 .gpio12 = GPIO_MODE_NATIVE, // LANPHYPC - output
17 .gpio13 = GPIO_MODE_GPIO, // -EC_WAKE - input
18 .gpio14 = GPIO_MODE_NATIVE, // OC7 - pullup
19 .gpio15 = GPIO_MODE_GPIO, // pullup - ME CRYPTO STRAP WITH TLS CONFIDENTIALITY
20 .gpio16 = GPIO_MODE_NATIVE, // SATA4GP - SATA_DOCK_DTCT - input from gpio33
21 .gpio17 = GPIO_MODE_GPIO, // DGFX_PW RGD - input
22 .gpio18 = GPIO_MODE_NATIVE, // PCIECLKRQ1 - -CLKREQ_WLAN - input
23 .gpio19 = GPIO_MODE_NATIVE, // SATA1GP - SATA_BAY_DTCT - input to gpio22
24 .gpio20 = GPIO_MODE_NATIVE, // PCIECLKRQ2 - pullup
25 .gpio21 = GPIO_MODE_GPIO, // -DISCRETE_GFX_PRESENCE - input
26 .gpio22 = GPIO_MODE_GPIO, // SATA_BAY_DTCT - output to SATA1GP
27 .gpio23 = GPIO_MODE_NATIVE, // LDRQ1 - TP84
28 .gpio24 = GPIO_MODE_GPIO, // pullup
29 .gpio25 = GPIO_MODE_NATIVE, // PCIECLKRQ3 - -CLKREQ_EXC - input
30 .gpio26 = GPIO_MODE_NATIVE, // PCIECLKRQ4 - pullup
31 .gpio27 = GPIO_MODE_GPIO, // -MSATA_DTCT - input
32 .gpio28 = GPIO_MODE_GPIO, // pulldown possible
33 .gpio29 = GPIO_MODE_GPIO, // SLP_LAN - -PCH_SLP_LAN
34 .gpio30 = GPIO_MODE_NATIVE, // SUSPWRDNACK - output
35 .gpio31 = GPIO_MODE_NATIVE, // ACPRESENT - input
36};
37
38static const struct pch_gpio_set1 pch_gpio_set1_direction = {
39 .gpio0 = GPIO_DIR_INPUT,
40 .gpio1 = GPIO_DIR_INPUT,
41 .gpio2 = GPIO_DIR_INPUT,
42 .gpio3 = GPIO_DIR_INPUT,
43 .gpio4 = GPIO_DIR_INPUT,
44 .gpio5 = GPIO_DIR_INPUT,
45 .gpio6 = GPIO_DIR_INPUT,
46 .gpio7 = GPIO_DIR_INPUT,
47 .gpio8 = GPIO_DIR_OUTPUT,
48 .gpio9 = GPIO_DIR_INPUT,
49 .gpio10 = GPIO_DIR_OUTPUT,
50 .gpio11 = GPIO_DIR_INPUT,
51 .gpio12 = GPIO_DIR_OUTPUT,
52 .gpio13 = GPIO_DIR_INPUT,
53 .gpio14 = GPIO_DIR_INPUT,
54 .gpio15 = GPIO_DIR_OUTPUT,
55 .gpio16 = GPIO_DIR_INPUT,
56 .gpio17 = GPIO_DIR_INPUT,
57 .gpio18 = GPIO_DIR_INPUT,
58 .gpio19 = GPIO_DIR_INPUT,
59 .gpio20 = GPIO_DIR_INPUT,
60 .gpio21 = GPIO_DIR_INPUT,
61 .gpio22 = GPIO_DIR_OUTPUT,
62 .gpio23 = GPIO_DIR_INPUT,
63 .gpio24 = GPIO_DIR_OUTPUT,
64 .gpio25 = GPIO_DIR_INPUT,
65 .gpio26 = GPIO_DIR_INPUT,
66 .gpio27 = GPIO_DIR_OUTPUT,
67 .gpio28 = GPIO_DIR_OUTPUT,
68 .gpio29 = GPIO_DIR_OUTPUT,
69 .gpio30 = GPIO_DIR_OUTPUT,
70 .gpio31 = GPIO_DIR_INPUT,
71};
72
73static const struct pch_gpio_set1 pch_gpio_set1_level = {
74 .gpio0 = GPIO_LEVEL_HIGH,
75 .gpio1 = GPIO_LEVEL_HIGH,
76 .gpio2 = GPIO_LEVEL_LOW,
77 .gpio3 = GPIO_LEVEL_HIGH,
78 .gpio4 = GPIO_LEVEL_HIGH,
79 .gpio5 = GPIO_LEVEL_HIGH,
80 .gpio6 = GPIO_LEVEL_LOW,
81 .gpio7 = GPIO_LEVEL_HIGH,
82 .gpio8 = GPIO_LEVEL_HIGH,
83 .gpio9 = GPIO_LEVEL_HIGH,
84 .gpio10 = GPIO_LEVEL_HIGH,
85 .gpio11 = GPIO_LEVEL_HIGH,
86 .gpio12 = GPIO_LEVEL_HIGH,
87 .gpio13 = GPIO_LEVEL_HIGH,
88 .gpio14 = GPIO_LEVEL_HIGH,
89 .gpio15 = GPIO_LEVEL_LOW,
90 .gpio16 = GPIO_LEVEL_HIGH,
91 .gpio17 = GPIO_LEVEL_LOW,
92 .gpio18 = GPIO_LEVEL_HIGH,
93 .gpio19 = GPIO_LEVEL_LOW,
94 .gpio20 = GPIO_LEVEL_HIGH,
95 .gpio21 = GPIO_LEVEL_LOW,
96 .gpio22 = GPIO_LEVEL_LOW,
97 .gpio23 = GPIO_LEVEL_HIGH,
98 .gpio24 = GPIO_LEVEL_LOW,
99 .gpio25 = GPIO_LEVEL_HIGH,
100 .gpio26 = GPIO_LEVEL_HIGH,
101 .gpio27 = GPIO_LEVEL_HIGH,
102 .gpio28 = GPIO_LEVEL_LOW,
103 .gpio29 = GPIO_LEVEL_HIGH,
104 .gpio30 = GPIO_LEVEL_HIGH,
105 .gpio31 = GPIO_LEVEL_HIGH,
106};
107
108static const struct pch_gpio_set1 pch_gpio_set1_invert = {
109 .gpio1 = GPIO_INVERT,
110 .gpio7 = GPIO_INVERT,
111 .gpio13 = GPIO_INVERT,
112};
113
114static const struct pch_gpio_set1 pch_gpio_set1_blink = {
115 .gpio18 = GPIO_NO_BLINK,
116};
117
118static const struct pch_gpio_set1 pch_gpio_set1_reset = {
119 .gpio24 = GPIO_RESET_RSMRST,
120};
121
122static const struct pch_gpio_set2 pch_gpio_set2_mode = {
123 .gpio32 = GPIO_MODE_NATIVE, // CLKRUN - output
124 .gpio33 = GPIO_MODE_GPIO, // SATA_DOCK_DTCT - output to SATA4GP
125 .gpio34 = GPIO_MODE_GPIO, // DGFX_VRM_ID - input - HIGH: 1GB / LOW: 2GB
126 .gpio35 = GPIO_MODE_GPIO, // pullup
127 .gpio36 = GPIO_MODE_GPIO, // pulldown
128 .gpio37 = GPIO_MODE_NATIVE, // SATA2GP - eSATA_DTCT - input to gpio
129 .gpio38 = GPIO_MODE_GPIO, // planarid2 - input - pulldown
130 .gpio39 = GPIO_MODE_GPIO, // planarid3 - input - pulldown
131 .gpio40 = GPIO_MODE_NATIVE, // OC1 - -USB_PORT1_OC1 - input
132 .gpio41 = GPIO_MODE_GPIO, // OC2 - -USB_PORTX_OC2 - input
133 .gpio42 = GPIO_MODE_GPIO, // SMB_3B_EN - output
134 .gpio43 = GPIO_MODE_NATIVE, // OC4 - pullup
135 .gpio44 = GPIO_MODE_NATIVE, // PCIECLKRQ5 - -CLKREQ_GBE - input
136 .gpio45 = GPIO_MODE_NATIVE, // PCIECLKRQ6 - -CLKREQ_USB30_TR - input
137 .gpio46 = GPIO_MODE_NATIVE, // PCIECLKRQ7 - pullup
138 .gpio47 = GPIO_MODE_NATIVE, // PEG_A_CLKRQ# - input
139 .gpio48 = GPIO_MODE_GPIO, // planarid0 - input - PDV low / FVT high
140 .gpio49 = GPIO_MODE_GPIO, // planarid1 - input - pulldown
141 .gpio50 = GPIO_MODE_GPIO, // -SC_DTCT - input
142 .gpio51 = GPIO_MODE_GPIO, // pullup
143 .gpio52 = GPIO_MODE_GPIO, // OPTIMUS_ENABLE - output - high: igpu / low: dgpu
144 .gpio53 = GPIO_MODE_GPIO, // pullup
145 .gpio54 = GPIO_MODE_GPIO, // -BDC_PRESENCE - input
146 .gpio55 = GPIO_MODE_GPIO, // pullup
147 .gpio56 = GPIO_MODE_NATIVE, // PEG_B_CLKRQ - pullup
148 .gpio57 = GPIO_MODE_GPIO, // -DTPM_PRESENCE - input
149 .gpio58 = GPIO_MODE_NATIVE, // SML1CLK - EC_SCL2 - output
150 .gpio59 = GPIO_MODE_NATIVE, // OC0 - pullup
151 .gpio60 = GPIO_MODE_NATIVE, // SML0ALERT# - pullup
152 .gpio61 = GPIO_MODE_NATIVE, // SUS_STAT - output
153 .gpio62 = GPIO_MODE_NATIVE, // SUSCLK - output
154 .gpio63 = GPIO_MODE_NATIVE, // SLP_S5 - output
155};
156
157static const struct pch_gpio_set2 pch_gpio_set2_direction = {
158 .gpio32 = GPIO_DIR_INPUT,
159 .gpio33 = GPIO_DIR_OUTPUT,
160 .gpio34 = GPIO_DIR_INPUT,
161 .gpio35 = GPIO_DIR_OUTPUT,
162 .gpio36 = GPIO_DIR_INPUT,
163 .gpio37 = GPIO_DIR_INPUT,
164 .gpio38 = GPIO_DIR_INPUT,
165 .gpio39 = GPIO_DIR_INPUT,
166 .gpio40 = GPIO_DIR_INPUT,
167 .gpio41 = GPIO_DIR_OUTPUT,
168 .gpio42 = GPIO_DIR_OUTPUT,
169 .gpio43 = GPIO_DIR_INPUT,
170 .gpio44 = GPIO_DIR_INPUT,
171 .gpio45 = GPIO_DIR_INPUT,
172 .gpio46 = GPIO_DIR_INPUT,
173 .gpio47 = GPIO_DIR_INPUT,
174 .gpio48 = GPIO_DIR_INPUT,
175 .gpio49 = GPIO_DIR_INPUT,
176 .gpio50 = GPIO_DIR_INPUT,
177 .gpio51 = GPIO_DIR_OUTPUT,
178 .gpio52 = GPIO_DIR_OUTPUT,
179 .gpio53 = GPIO_DIR_OUTPUT,
180 .gpio54 = GPIO_DIR_INPUT,
181 .gpio55 = GPIO_DIR_OUTPUT,
182 .gpio56 = GPIO_DIR_INPUT,
183 .gpio57 = GPIO_DIR_INPUT,
184 .gpio58 = GPIO_DIR_INPUT,
185 .gpio59 = GPIO_DIR_INPUT,
186 .gpio60 = GPIO_DIR_INPUT,
187 .gpio61 = GPIO_DIR_OUTPUT,
188 .gpio62 = GPIO_DIR_OUTPUT,
189 .gpio63 = GPIO_DIR_OUTPUT,
190};
191
192static const struct pch_gpio_set2 pch_gpio_set2_level = {
193 .gpio32 = GPIO_LEVEL_HIGH,
194 .gpio33 = GPIO_LEVEL_HIGH,
195 .gpio34 = GPIO_LEVEL_HIGH,
196 .gpio35 = GPIO_LEVEL_LOW,
197 .gpio36 = GPIO_LEVEL_LOW,
198 .gpio37 = GPIO_LEVEL_LOW,
199 .gpio38 = GPIO_LEVEL_HIGH,
200 .gpio39 = GPIO_LEVEL_LOW,
201 .gpio40 = GPIO_LEVEL_HIGH,
202 .gpio41 = GPIO_LEVEL_HIGH,
203 .gpio42 = GPIO_LEVEL_HIGH,
204 .gpio43 = GPIO_LEVEL_HIGH,
205 .gpio44 = GPIO_LEVEL_HIGH,
206 .gpio45 = GPIO_LEVEL_HIGH,
207 .gpio46 = GPIO_LEVEL_HIGH,
208 .gpio47 = GPIO_LEVEL_HIGH,
209 .gpio48 = GPIO_LEVEL_HIGH,
210 .gpio49 = GPIO_LEVEL_HIGH,
211 .gpio50 = GPIO_LEVEL_HIGH,
212 .gpio51 = GPIO_LEVEL_HIGH,
213 .gpio52 = GPIO_LEVEL_HIGH,
214 .gpio53 = GPIO_LEVEL_HIGH,
215 .gpio54 = GPIO_LEVEL_LOW,
216 .gpio55 = GPIO_LEVEL_HIGH,
217 .gpio56 = GPIO_LEVEL_HIGH,
218 .gpio57 = GPIO_LEVEL_LOW,
219 .gpio58 = GPIO_LEVEL_HIGH,
220 .gpio59 = GPIO_LEVEL_HIGH,
221 .gpio60 = GPIO_LEVEL_HIGH,
222 .gpio61 = GPIO_LEVEL_HIGH,
223 .gpio62 = GPIO_LEVEL_HIGH,
224 .gpio63 = GPIO_LEVEL_HIGH,
225};
226
227static const struct pch_gpio_set3 pch_gpio_set3_mode = {
228 .gpio64 = GPIO_MODE_NATIVE, // NC
229 .gpio65 = GPIO_MODE_NATIVE, // VIDEO_CLK_27M_NSS - output
230 .gpio66 = GPIO_MODE_NATIVE, // NC
231 .gpio67 = GPIO_MODE_NATIVE, // VIDEO_CLK_27M_SS - output
232 .gpio68 = GPIO_MODE_GPIO, // -INT_MIC_DTCT - input
233 .gpio69 = GPIO_MODE_GPIO, // mic enable bit - low enable - pulldown
234 .gpio70 = GPIO_MODE_GPIO, // pullup
235 .gpio71 = GPIO_MODE_GPIO, // pullup
236 .gpio72 = GPIO_MODE_NATIVE, // BATLOW - input
237 .gpio73 = GPIO_MODE_NATIVE, // pullup
238 .gpio74 = GPIO_MODE_NATIVE, // pullup
239 .gpio75 = GPIO_MODE_NATIVE, // SML1DATA - EC_SDA2 - i/o
240};
241
242static const struct pch_gpio_set3 pch_gpio_set3_direction = {
243 .gpio64 = GPIO_DIR_OUTPUT,
244 .gpio65 = GPIO_DIR_OUTPUT,
245 .gpio66 = GPIO_DIR_OUTPUT,
246 .gpio67 = GPIO_DIR_OUTPUT,
247 .gpio68 = GPIO_DIR_INPUT,
248 .gpio69 = GPIO_DIR_INPUT,
249 .gpio70 = GPIO_DIR_INPUT,
250 .gpio71 = GPIO_DIR_INPUT,
251 .gpio72 = GPIO_DIR_INPUT,
252 .gpio73 = GPIO_DIR_INPUT,
253 .gpio74 = GPIO_DIR_INPUT,
254 .gpio75 = GPIO_DIR_INPUT,
255};
256
257static const struct pch_gpio_set3 pch_gpio_set3_level = {
258 .gpio64 = GPIO_LEVEL_HIGH,
259 .gpio65 = GPIO_LEVEL_HIGH,
260 .gpio66 = GPIO_LEVEL_HIGH,
261 .gpio67 = GPIO_LEVEL_HIGH,
262 .gpio68 = GPIO_LEVEL_LOW,
263 .gpio69 = GPIO_LEVEL_LOW,
264 .gpio70 = GPIO_LEVEL_LOW,
265 .gpio71 = GPIO_LEVEL_HIGH,
266 .gpio72 = GPIO_LEVEL_HIGH,
267 .gpio73 = GPIO_LEVEL_HIGH,
268 .gpio74 = GPIO_LEVEL_HIGH,
269 .gpio75 = GPIO_LEVEL_HIGH,
270};
271
272const struct pch_gpio_map mainboard_gpio_map = {
273 .set1 = {
274 .mode = &pch_gpio_set1_mode,
275 .direction = &pch_gpio_set1_direction,
276 .level = &pch_gpio_set1_level,
277 .invert = &pch_gpio_set1_invert,
278 .blink = &pch_gpio_set1_blink,
279 .reset = &pch_gpio_set1_reset,
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};