• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef STOUT_GPIO_H
4 #define STOUT_GPIO_H
5 
6 #include <southbridge/intel/common/gpio.h>
7 
8 static const struct pch_gpio_set1 pch_gpio_set1_mode = {
9 	.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 
43 static const struct pch_gpio_set1 pch_gpio_set1_direction = {
44 	/*
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 
76 static const struct pch_gpio_set1 pch_gpio_set1_level = {
77 	/*
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 
109 static const struct pch_gpio_set1 pch_gpio_set1_invert = {
110 	.gpio1 = GPIO_INVERT,
111 	.gpio6 = GPIO_INVERT,
112 	.gpio8 = GPIO_INVERT,
113 };
114 
115 static const struct pch_gpio_set2 pch_gpio_set2_mode = {
116 	.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 
150 static const struct pch_gpio_set2 pch_gpio_set2_direction = {
151 	/*
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 
180 static const struct pch_gpio_set2 pch_gpio_set2_level = {
181 	/*
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 
210 static const struct pch_gpio_set3 pch_gpio_set3_mode = {
211 	.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 
225 static const struct pch_gpio_set3 pch_gpio_set3_direction = {
226 	/*
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 
241 static const struct pch_gpio_set3 pch_gpio_set3_level = {
242 	/*
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 
257 const struct pch_gpio_map mainboard_gpio_map = {
258 	.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
276