blob: a2b44459e9f4347d07b47a0626f63904e8018407 [file] [log] [blame]
Angel Pons2e8a4b02020-04-05 13:22:54 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -07002
3#ifndef STOUT_GPIO_H
4#define STOUT_GPIO_H
5
Patrick Rudolphe8e66f42016-02-06 17:42:42 +01006#include <southbridge/intel/common/gpio.h>
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -07007
Peter Lemenkov6752b6152019-06-15 21:39:32 +02008static const struct pch_gpio_set1 pch_gpio_set1_mode = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -07009 .gpio0 = GPIO_MODE_GPIO, /* GPIO0 */
10 .gpio1 = GPIO_MODE_GPIO, /* SIO_EXT_SMI# */
11 .gpio2 = GPIO_MODE_NONE, /* NOT USED */
12 .gpio3 = GPIO_MODE_NONE, /* NOT USED */
13 .gpio4 = GPIO_MODE_NONE, /* NOT USED */
14 .gpio5 = GPIO_MODE_GPIO, /* INTH# */
15 .gpio6 = GPIO_MODE_GPIO, /* SIO_EXT_SCI# */
16 .gpio7 = GPIO_MODE_GPIO, /* GE_SCR_WP# */
17 .gpio8 = GPIO_MODE_NONE, /* NOT USED */
18 .gpio9 = GPIO_MODE_NATIVE, /* USB_OC5# */
19 .gpio10 = GPIO_MODE_NATIVE, /* USB_OC6# */
20 .gpio11 = GPIO_MODE_NATIVE, /* SMBALERT# */
21 .gpio12 = GPIO_MODE_GPIO, /* GPIO12 */
22 .gpio13 = GPIO_MODE_GPIO, /* GPIO13 */
23 .gpio14 = GPIO_MODE_NATIVE, /* USB_OC7# */
24 .gpio15 = GPIO_MODE_GPIO, /* GPIO15 */
25 .gpio16 = GPIO_MODE_GPIO, /* WWAN_LED_ON */
26 .gpio17 = GPIO_MODE_GPIO, /* WLAN_LED_ON */
27 .gpio18 = GPIO_MODE_NATIVE, /* PCIE_CLKREQ_WLAN# */
28 .gpio19 = GPIO_MODE_GPIO, /* BBS_BIT0 */
29 .gpio20 = GPIO_MODE_NATIVE, /* PCIE_CLKREQ_CARD# */
30 .gpio21 = GPIO_MODE_GPIO, /* BT_DET# / TP29 */
31 .gpio22 = GPIO_MODE_GPIO, /* MODEL_ID0 */
32 .gpio23 = GPIO_MODE_GPIO, /* LCD_BK_OFF */
33 .gpio24 = GPIO_MODE_NATIVE, /* GPIO24 */
34 .gpio25 = GPIO_MODE_NATIVE, /* PCIE_REQ_WWAN# / TP89 */
35 .gpio26 = GPIO_MODE_NATIVE, /* CLK_PCIE_REQ4# / TP59 */
36 .gpio27 = GPIO_MODE_GPIO, /* MSATA_DTCT# */
37 .gpio28 = GPIO_MODE_GPIO, /* PLL_ODVR_EN */
38 .gpio29 = GPIO_MODE_GPIO, /* WLAN_AOAC_ON */
39 .gpio30 = GPIO_MODE_NATIVE, /* SUS_PWR_ACK */
40 .gpio31 = GPIO_MODE_NATIVE, /* AC_PRESENT */
41};
42
Peter Lemenkov6752b6152019-06-15 21:39:32 +020043static const struct pch_gpio_set1 pch_gpio_set1_direction = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -070044 /*
45 * Note: Only gpio configured as "gpio" or "none" need to have the
46 * direction configured.
47 */
48 .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_OUTPUT,
54 .gpio6 = GPIO_DIR_INPUT,
55 .gpio7 = GPIO_DIR_INPUT,
56 .gpio8 = GPIO_DIR_INPUT,
57
58 .gpio12 = GPIO_DIR_OUTPUT,
59 .gpio13 = GPIO_DIR_OUTPUT,
60
61 .gpio15 = GPIO_DIR_INPUT,
62 .gpio16 = GPIO_DIR_OUTPUT,
63 .gpio17 = GPIO_DIR_OUTPUT,
64
65 .gpio19 = GPIO_DIR_OUTPUT,
66
67 .gpio21 = GPIO_DIR_OUTPUT,
68 .gpio22 = GPIO_DIR_INPUT,
69 .gpio23 = GPIO_DIR_OUTPUT,
70
71 .gpio27 = GPIO_DIR_INPUT,
72 .gpio28 = GPIO_DIR_OUTPUT,
73 .gpio29 = GPIO_DIR_OUTPUT,
74};
75
Peter Lemenkov6752b6152019-06-15 21:39:32 +020076static const struct pch_gpio_set1 pch_gpio_set1_level = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -070077 /*
78 * Note: Only gpio configured as "gpio" or "none" need to have the
79 * level set.
80 */
81 .gpio0 = GPIO_LEVEL_HIGH,
82 .gpio1 = GPIO_LEVEL_LOW,
83 .gpio2 = GPIO_LEVEL_LOW,
84 .gpio3 = GPIO_LEVEL_LOW,
85 .gpio4 = GPIO_LEVEL_LOW,
86 .gpio5 = GPIO_LEVEL_HIGH,
87 .gpio6 = GPIO_LEVEL_LOW,
88 .gpio7 = GPIO_LEVEL_HIGH,
89 .gpio8 = GPIO_LEVEL_LOW,
90
91 .gpio12 = GPIO_LEVEL_LOW,
92 .gpio13 = GPIO_LEVEL_LOW,
93
94 .gpio15 = GPIO_LEVEL_LOW,
95 .gpio16 = GPIO_LEVEL_HIGH,
96 .gpio17 = GPIO_LEVEL_LOW,
97
98 .gpio19 = GPIO_LEVEL_LOW,
99
100 .gpio21 = GPIO_LEVEL_LOW,
101 .gpio22 = GPIO_LEVEL_LOW,
102 .gpio23 = GPIO_LEVEL_LOW,
103
104 .gpio27 = GPIO_LEVEL_LOW,
105 .gpio28 = GPIO_LEVEL_HIGH,
106 .gpio29 = GPIO_LEVEL_HIGH,
107};
108
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200109static const struct pch_gpio_set1 pch_gpio_set1_invert = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700110 .gpio1 = GPIO_INVERT,
111 .gpio6 = GPIO_INVERT,
112 .gpio8 = GPIO_INVERT,
113};
114
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200115static const struct pch_gpio_set2 pch_gpio_set2_mode = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700116 .gpio32 = GPIO_MODE_NATIVE, /* PCI_CLKRUN# */
117 .gpio33 = GPIO_MODE_GPIO, /* GPIO33 */
118 .gpio34 = GPIO_MODE_GPIO, /* CCD_ON */
119 .gpio35 = GPIO_MODE_GPIO, /* BT_ON */
120 .gpio36 = GPIO_MODE_NONE, /* NOT USED */
121 .gpio37 = GPIO_MODE_NONE, /* NOT USED */
122 .gpio38 = GPIO_MODE_NONE, /* NOT USED */
123 .gpio39 = GPIO_MODE_NONE, /* NOT USED */
124 .gpio40 = GPIO_MODE_GPIO, /* USB_OC1# */
125 .gpio41 = GPIO_MODE_GPIO, /* USB_OC2# */
126 .gpio42 = GPIO_MODE_NATIVE, /* USB_OC3# */
127 .gpio43 = GPIO_MODE_NATIVE, /* USB_OC4_AUO4# */
128 .gpio44 = GPIO_MODE_NATIVE, /* PCIE_CLKREQ_LAN# */
129 .gpio45 = GPIO_MODE_NATIVE, /* PCIECLKRQ6# / TP48 */
130 .gpio46 = GPIO_MODE_NATIVE, /* PCIECLKRQ7# / TP57 */
131 .gpio47 = GPIO_MODE_NATIVE, /* CLK_PEGA_REQ# */
132 .gpio48 = GPIO_MODE_GPIO, /* DIS_BT_ON# */
133 .gpio49 = GPIO_MODE_GPIO, /* GPIO49 */
134 .gpio50 = GPIO_MODE_NATIVE, /* PCI_REQ1# */
135 .gpio51 = GPIO_MODE_GPIO, /* BBS_BIT1 */
136 .gpio52 = GPIO_MODE_NATIVE, /* PCI_REQ2# */
137 .gpio53 = GPIO_MODE_GPIO, /* PWM_SELECT# / TP44 */
138 .gpio54 = GPIO_MODE_GPIO, /* PCI_REQ3# */
139 .gpio55 = GPIO_MODE_NATIVE, /* PCI_GNT3# */
140 .gpio56 = GPIO_MODE_NATIVE, /* CLK_PEGB_REQ# / TP60 */
141 .gpio57 = GPIO_MODE_GPIO, /* PCH_GPIO57 */
142 .gpio58 = GPIO_MODE_NATIVE, /* SMB_ME1_CLK */
143 .gpio59 = GPIO_MODE_GPIO, /* USB_OC0_1# */
144 .gpio60 = GPIO_MODE_GPIO, /* DRAMRST_CNTRL_PCH */
145 .gpio61 = GPIO_MODE_GPIO, /* LPCPD# */
146 .gpio62 = GPIO_MODE_NATIVE, /* PCH_SUSCLK_L / TP54 */
147 .gpio63 = GPIO_MODE_NATIVE, /* TP51 */
148};
149
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200150static const struct pch_gpio_set2 pch_gpio_set2_direction = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700151 /*
152 * Note: Only gpio configured as "gpio" or "none" need to have the
153 * direction configured.
154 */
155 .gpio33 = GPIO_DIR_OUTPUT,
156 .gpio34 = GPIO_DIR_OUTPUT,
157 .gpio35 = GPIO_DIR_OUTPUT,
158 .gpio36 = GPIO_DIR_INPUT,
159 .gpio37 = GPIO_DIR_INPUT,
160 .gpio38 = GPIO_DIR_INPUT,
161 .gpio39 = GPIO_DIR_INPUT,
162 .gpio40 = GPIO_DIR_INPUT,
163 .gpio41 = GPIO_DIR_INPUT,
164
165 .gpio48 = GPIO_DIR_OUTPUT,
166 .gpio49 = GPIO_DIR_INPUT,
167
168 .gpio51 = GPIO_DIR_OUTPUT,
169
170 .gpio53 = GPIO_DIR_OUTPUT,
171 .gpio54 = GPIO_DIR_INPUT,
172
173 .gpio57 = GPIO_DIR_INPUT,
174
175 .gpio59 = GPIO_DIR_INPUT,
176 .gpio60 = GPIO_DIR_OUTPUT,
177 .gpio61 = GPIO_DIR_OUTPUT,
178};
179
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200180static const struct pch_gpio_set2 pch_gpio_set2_level = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700181 /*
182 * Note: Only gpio configured as "gpio" or "none" need to have the
183 * level set.
184 */
185 .gpio33 = GPIO_LEVEL_LOW,
186 .gpio34 = GPIO_LEVEL_HIGH,
187 .gpio35 = GPIO_LEVEL_HIGH,
188 .gpio36 = GPIO_LEVEL_LOW,
189 .gpio37 = GPIO_LEVEL_LOW,
190 .gpio38 = GPIO_LEVEL_LOW,
191 .gpio39 = GPIO_LEVEL_LOW,
192 .gpio40 = GPIO_LEVEL_HIGH,
193 .gpio41 = GPIO_LEVEL_LOW,
194
195 .gpio48 = GPIO_LEVEL_LOW,
196 .gpio49 = GPIO_LEVEL_HIGH,
197
198 .gpio51 = GPIO_LEVEL_HIGH,
199
200 .gpio53 = GPIO_LEVEL_HIGH,
201 .gpio54 = GPIO_LEVEL_LOW,
202
203 .gpio57 = GPIO_LEVEL_LOW,
204
205 .gpio59 = GPIO_LEVEL_HIGH,
206 .gpio60 = GPIO_LEVEL_HIGH,
207 .gpio61 = GPIO_LEVEL_LOW,
208};
209
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200210static const struct pch_gpio_set3 pch_gpio_set3_mode = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700211 .gpio64 = GPIO_MODE_GPIO, /* CLK_FLEX0 / TP38 */
212 .gpio65 = GPIO_MODE_GPIO, /* CLK_FLEX1 / TP45 */
213 .gpio66 = GPIO_MODE_GPIO, /* CLK_FLEX2 / TP83 */
214 .gpio67 = GPIO_MODE_GPIO, /* CLK_FLEX3 / TP82 */
215 .gpio68 = GPIO_MODE_GPIO, /* WWAN_DTCT# */
216 .gpio69 = GPIO_MODE_GPIO, /* GPIO69 */
217 .gpio70 = GPIO_MODE_GPIO, /* WLAN_OFF# */
218 .gpio71 = GPIO_MODE_GPIO, /* WWAN_OFF# */
219 .gpio72 = GPIO_MODE_GPIO, /* PM_BATLOW# */
220 .gpio73 = GPIO_MODE_NATIVE, /* PCIECLKRQ0# / TP39 */
221 .gpio74 = GPIO_MODE_NATIVE, /* SML1ALERT#_R / TP56 */
222 .gpio75 = GPIO_MODE_NATIVE, /* SMB_ME1_DAT */
223};
224
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200225static const struct pch_gpio_set3 pch_gpio_set3_direction = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700226 /*
227 * Note: Only gpio configured as "gpio" or "none" need to have the
228 * direction configured.
229 */
230 .gpio64 = GPIO_DIR_OUTPUT,
231 .gpio65 = GPIO_DIR_OUTPUT,
232 .gpio66 = GPIO_DIR_OUTPUT,
233 .gpio67 = GPIO_DIR_INPUT,
234 .gpio68 = GPIO_DIR_INPUT,
235 .gpio69 = GPIO_DIR_OUTPUT,
236 .gpio70 = GPIO_DIR_OUTPUT,
237 .gpio71 = GPIO_DIR_OUTPUT,
238 .gpio72 = GPIO_DIR_OUTPUT,
239};
240
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200241static const struct pch_gpio_set3 pch_gpio_set3_level = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700242 /*
243 * Note: Only gpio configured as "gpio" or "none" need to have the
244 * level set.
245 */
246 .gpio64 = GPIO_LEVEL_HIGH,
247 .gpio65 = GPIO_LEVEL_LOW,
248 .gpio66 = GPIO_LEVEL_HIGH,
249 .gpio67 = GPIO_LEVEL_LOW,
250 .gpio68 = GPIO_LEVEL_HIGH,
251 .gpio69 = GPIO_LEVEL_LOW,
252 .gpio70 = GPIO_LEVEL_HIGH,
253 .gpio71 = GPIO_LEVEL_HIGH,
254 .gpio72 = GPIO_LEVEL_HIGH,
255};
256
Vladimir Serbinenkoffbb3c02016-02-10 01:36:25 +0100257const struct pch_gpio_map mainboard_gpio_map = {
Stefan Reinauerb7ecf6d2013-03-13 17:13:32 -0700258 .set1 = {
259 .mode = &pch_gpio_set1_mode,
260 .direction = &pch_gpio_set1_direction,
261 .level = &pch_gpio_set1_level,
262 .invert = &pch_gpio_set1_invert,
263 },
264 .set2 = {
265 .mode = &pch_gpio_set2_mode,
266 .direction = &pch_gpio_set2_direction,
267 .level = &pch_gpio_set2_level,
268 },
269 .set3 = {
270 .mode = &pch_gpio_set3_mode,
271 .direction = &pch_gpio_set3_direction,
272 .level = &pch_gpio_set3_level,
273 },
274};
275#endif