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