• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <southbridge/intel/common/gpio.h>
4 
5 static const struct pch_gpio_set1 pch_gpio_set1_mode = {
6 	.gpio0  = GPIO_MODE_NONE,   /* Unused */
7 	.gpio1  = GPIO_MODE_NONE,   /* Unused */
8 	.gpio2  = GPIO_MODE_NONE,   /* Unused */
9 	.gpio3  = GPIO_MODE_NONE,   /* Unused */
10 	.gpio4  = GPIO_MODE_NATIVE, /* Native - TPSINT# for TP SMBus IRQ */
11 	.gpio5  = GPIO_MODE_NONE,   /* Unused */
12 	.gpio6  = GPIO_MODE_GPIO,   /* Input - BOARD_ID4 */
13 	.gpio7  = GPIO_MODE_GPIO,   /* Input - BOARD_ID5 */
14 	.gpio8  = GPIO_MODE_GPIO,   /* Output - BT on/off */
15 	.gpio9  = GPIO_MODE_NONE,   /* Unused */
16 	.gpio10 = GPIO_MODE_NONE,   /* Unused */
17 	.gpio11 = GPIO_MODE_GPIO,   /* Input - TP WAKEUP Event */
18 	.gpio12 = GPIO_MODE_NONE,   /* Unused */
19 	.gpio13 = GPIO_MODE_GPIO,   /* Input - SCI from EC */
20 	.gpio14 = GPIO_MODE_GPIO,   /* Output - AOAC WLAN  power control */
21 	.gpio15 = GPIO_MODE_GPIO,   /* Unused - Do not control WLAN*/
22 	.gpio16 = GPIO_MODE_NONE,   /* Unused */
23 	.gpio17 = GPIO_MODE_GPIO,   /* Input - DGPU_PWROK */
24 	.gpio18 = GPIO_MODE_NATIVE, /* Native - PCIECLKRQ1# LAN clock pin*/
25 	.gpio19 = GPIO_MODE_GPIO,   /* Input - Boot BIOS  Selection 0 */
26 	.gpio20 = GPIO_MODE_NATIVE, /* Native - PCIECLKRQ2# SDCard clock pin */
27 	.gpio21 = GPIO_MODE_GPIO,   /* Input - EC_ENTERING_RW for Google OS */
28 	.gpio22 = GPIO_MODE_GPIO,   /* Input - BIOS RECOVERY */
29 	.gpio23 = GPIO_MODE_NONE,   /* Unused */
30 	.gpio24 = GPIO_MODE_GPIO,   /* Output - DGPU_HOLD_RST# */
31 	.gpio25 = GPIO_MODE_NONE,   /* Unused */
32 	.gpio26 = GPIO_MODE_NONE,   /* Unused */
33 	.gpio27 = GPIO_MODE_NONE,   /* Unused */
34 	.gpio28 = GPIO_MODE_NONE,   /* Unused */
35 	.gpio29 = GPIO_MODE_NONE,   /* Unused */
36 	.gpio30 = GPIO_MODE_NATIVE, /* Native - SUSWARN_EC# */
37 	.gpio31 = GPIO_MODE_NONE,   /* Unused */
38 };
39 
40 static const struct pch_gpio_set1 pch_gpio_set1_direction = {
41 	.gpio0  = GPIO_DIR_INPUT,  /* Unused */
42 	.gpio1  = GPIO_DIR_INPUT,  /* Unused */
43 	.gpio2  = GPIO_DIR_INPUT,  /* Unused */
44 	.gpio3  = GPIO_DIR_INPUT,  /* Unused */
45 	.gpio4  = GPIO_DIR_INPUT,  /* Native */
46 	.gpio5  = GPIO_DIR_INPUT,  /* Unused */
47 	.gpio6  = GPIO_DIR_INPUT,  /* Input */
48 	.gpio7  = GPIO_DIR_INPUT,  /* Input */
49 	.gpio8  = GPIO_DIR_INPUT,  /* Output HIGH - set in mainboard.c */
50 	.gpio9  = GPIO_DIR_INPUT,  /* Unused */
51 	.gpio10 = GPIO_DIR_INPUT,  /* Unused */
52 	.gpio11 = GPIO_DIR_INPUT,  /* Input */
53 	.gpio12 = GPIO_DIR_INPUT,  /* Unused */
54 	.gpio13 = GPIO_DIR_INPUT,  /* Input */
55 	.gpio14 = GPIO_DIR_OUTPUT, /* Output HIGH */
56 	.gpio15 = GPIO_DIR_INPUT,  /* Unused */
57 	.gpio16 = GPIO_DIR_INPUT,  /* Unused */
58 	.gpio17 = GPIO_DIR_INPUT,  /* Input */
59 	.gpio18 = GPIO_DIR_INPUT,  /* Native */
60 	.gpio19 = GPIO_DIR_INPUT,  /* Input */
61 	.gpio20 = GPIO_DIR_INPUT,  /* Native */
62 	.gpio21 = GPIO_DIR_INPUT,  /* Input */
63 	.gpio22 = GPIO_DIR_INPUT,  /* Input */
64 	.gpio23 = GPIO_DIR_INPUT,  /* Unused */
65 	.gpio24 = GPIO_DIR_OUTPUT, /* Output HIGH */
66 	.gpio25 = GPIO_DIR_INPUT,  /* Unused */
67 	.gpio26 = GPIO_DIR_INPUT,  /* Unused */
68 	.gpio27 = GPIO_DIR_INPUT,  /* Unused */
69 	.gpio28 = GPIO_DIR_INPUT,  /* Unused */
70 	.gpio29 = GPIO_DIR_INPUT,  /* Unused */
71 	.gpio30 = GPIO_DIR_INPUT,  /* Native */
72 	.gpio31 = GPIO_DIR_INPUT,  /* Unused */
73 };
74 
75 static const struct pch_gpio_set1 pch_gpio_set1_level = {
76 	.gpio0  = GPIO_LEVEL_LOW,  /* Unused */
77 	.gpio1  = GPIO_LEVEL_LOW,  /* Unused */
78 	.gpio2  = GPIO_LEVEL_LOW,  /* Unused */
79 	.gpio3  = GPIO_LEVEL_LOW,  /* Unused */
80 	.gpio4  = GPIO_LEVEL_LOW,  /* Native */
81 	.gpio5  = GPIO_LEVEL_LOW,  /* Unused */
82 	.gpio6  = GPIO_LEVEL_LOW,  /* Input */
83 	.gpio7  = GPIO_LEVEL_LOW,  /* Input */
84 	.gpio8  = GPIO_LEVEL_HIGH, /* Output HIGH - set in mainboard.c */
85 	.gpio9  = GPIO_LEVEL_LOW,  /* Unused */
86 	.gpio10 = GPIO_LEVEL_LOW,  /* Unused */
87 	.gpio11 = GPIO_LEVEL_LOW,  /* Input */
88 	.gpio12 = GPIO_LEVEL_LOW,  /* Unused */
89 	.gpio13 = GPIO_LEVEL_LOW,  /* Input */
90 	.gpio14 = GPIO_LEVEL_HIGH, /* Output HIGH */
91 	.gpio15 = GPIO_LEVEL_HIGH, /* Unused */
92 	.gpio16 = GPIO_LEVEL_LOW,  /* Unused */
93 	.gpio17 = GPIO_LEVEL_LOW,  /* Input */
94 	.gpio18 = GPIO_LEVEL_LOW,  /* Native */
95 	.gpio19 = GPIO_LEVEL_LOW,  /* Input */
96 	.gpio20 = GPIO_LEVEL_LOW,  /* Native */
97 	.gpio21 = GPIO_LEVEL_LOW,  /* Input */
98 	.gpio22 = GPIO_LEVEL_LOW,  /* Input */
99 	.gpio23 = GPIO_LEVEL_LOW,  /* Unused */
100 	.gpio24 = GPIO_LEVEL_HIGH, /* Output HIGH */
101 	.gpio25 = GPIO_LEVEL_LOW,  /* Unused */
102 	.gpio26 = GPIO_LEVEL_LOW,  /* Unused */
103 	.gpio27 = GPIO_LEVEL_LOW,  /* Unused */
104 	.gpio28 = GPIO_LEVEL_LOW,  /* Unused */
105 	.gpio29 = GPIO_LEVEL_LOW,  /* Unused */
106 	.gpio30 = GPIO_LEVEL_LOW,  /* Native */
107 	.gpio31 = GPIO_LEVEL_LOW,  /* Unused */
108 };
109 
110 static const struct pch_gpio_set1 pch_gpio_set1_invert = {
111 	.gpio11 = GPIO_INVERT,	/* invert touchpad wakeup pin */
112 	.gpio13 = GPIO_INVERT,	/* invert EC SCI pin */
113 };
114 
115 static const struct pch_gpio_set2 pch_gpio_set2_mode = {
116 	.gpio32 = GPIO_MODE_NATIVE, /* Native - Connect to EC Clock Run */
117 	.gpio33 = GPIO_MODE_GPIO,   /* Input - (Google protect BIOS ROM) */
118 	.gpio34 = GPIO_MODE_NONE,   /* Unused */
119 	.gpio35 = GPIO_MODE_NONE,   /* Unused */
120 	.gpio36 = GPIO_MODE_GPIO,   /* Output - DGPU_PWR_EN */
121 	.gpio37 = GPIO_MODE_GPIO,   /* Input - FDI TERM / VOLTAGE OVERRIDE */
122 	.gpio38 = GPIO_MODE_GPIO,   /* Input - MFG_MODE test */
123 	.gpio39 = GPIO_MODE_GPIO,   /* Input - DGPU_PRSNT */
124 	.gpio40 = GPIO_MODE_NONE,   /* Unused */
125 	.gpio41 = GPIO_MODE_NONE,   /* Unused */
126 	.gpio42 = GPIO_MODE_NONE,   /* Unused */
127 	.gpio43 = GPIO_MODE_NONE,   /* Unused */
128 	.gpio44 = GPIO_MODE_GPIO,   /* Input - BOARD_ID0 */
129 	.gpio45 = GPIO_MODE_GPIO,   /* Input - BOARD_ID1 */
130 	.gpio46 = GPIO_MODE_GPIO,   /* Input - BOARD_ID2 */
131 	.gpio47 = GPIO_MODE_NATIVE, /* Native - PEGA_GPU clock request */
132 	.gpio48 = GPIO_MODE_NONE,   /* Unused */
133 	.gpio49 = GPIO_MODE_NONE,   /* Unused */
134 	.gpio50 = GPIO_MODE_NONE,   /* Unused */
135 	.gpio51 = GPIO_MODE_GPIO,   /* Input - Boot BIOS  Selection 1 */
136 	.gpio52 = GPIO_MODE_GPIO,   /* Input - Google recovery, Pull up +3V */
137 	.gpio53 = GPIO_MODE_GPIO,   /* Output - G Sensor LED */
138 	.gpio54 = GPIO_MODE_GPIO,   /* Input - Google Development */
139 	.gpio55 = GPIO_MODE_GPIO,   /* Input - Top-Block Swap Override */
140 	.gpio56 = GPIO_MODE_NONE,   /* Unused */
141 	.gpio57 = GPIO_MODE_GPIO,   /* Input - SV_DET */
142 	.gpio58 = GPIO_MODE_NONE,   /* Unused */
143 	.gpio59 = GPIO_MODE_NONE,   /* Unused */
144 	.gpio60 = GPIO_MODE_NONE,   /* GPO - DRAMRST_CNTRL_PCH */
145 	.gpio61 = GPIO_MODE_NONE,   /* Unused */
146 	.gpio62 = GPIO_MODE_NATIVE, /* Native - Connect to EC 32.768KHz */
147 	.gpio63 = GPIO_MODE_NATIVE, /* Native - SLP_S5 */
148 };
149 
150 static const struct pch_gpio_set2 pch_gpio_set2_direction = {
151 	.gpio32 = GPIO_DIR_INPUT,  /* Native */
152 	.gpio33 = GPIO_DIR_INPUT,  /* Input */
153 	.gpio34 = GPIO_DIR_INPUT,  /* Unused */
154 	.gpio35 = GPIO_DIR_INPUT,  /* Unused */
155 	.gpio36 = GPIO_DIR_OUTPUT, /* Output HIGH */
156 	.gpio37 = GPIO_DIR_INPUT,  /* Input */
157 	.gpio38 = GPIO_DIR_INPUT,  /* Input */
158 	.gpio39 = GPIO_DIR_INPUT,  /* Input */
159 	.gpio40 = GPIO_DIR_INPUT,  /* Unused */
160 	.gpio41 = GPIO_DIR_INPUT,  /* Unused */
161 	.gpio42 = GPIO_DIR_INPUT,  /* Unused */
162 	.gpio43 = GPIO_DIR_INPUT,  /* Unused */
163 	.gpio44 = GPIO_DIR_INPUT,  /* Input */
164 	.gpio45 = GPIO_DIR_INPUT,  /* Input */
165 	.gpio46 = GPIO_DIR_INPUT,  /* Input */
166 	.gpio47 = GPIO_DIR_INPUT,  /* Native */
167 	.gpio48 = GPIO_DIR_INPUT,  /* Unused */
168 	.gpio49 = GPIO_DIR_INPUT,  /* Unused */
169 	.gpio50 = GPIO_DIR_INPUT,  /* Unused */
170 	.gpio51 = GPIO_DIR_INPUT,  /* Input */
171 	.gpio52 = GPIO_DIR_INPUT,  /* Input */
172 	.gpio53 = GPIO_DIR_OUTPUT, /* Input */
173 	.gpio54 = GPIO_DIR_INPUT,  /* Input */
174 	.gpio55 = GPIO_DIR_INPUT,  /* Input */
175 	.gpio56 = GPIO_DIR_INPUT,  /* Unused */
176 	.gpio57 = GPIO_DIR_INPUT,  /* Input */
177 	.gpio58 = GPIO_DIR_INPUT,  /* Unused */
178 	.gpio59 = GPIO_DIR_INPUT,  /* Unused */
179 	.gpio60 = GPIO_DIR_OUTPUT, /* Output HIGH */
180 	.gpio61 = GPIO_DIR_INPUT,  /* Unused */
181 	.gpio62 = GPIO_DIR_INPUT,  /* Native */
182 	.gpio63 = GPIO_DIR_INPUT,  /* Native */
183 };
184 
185 static const struct pch_gpio_set2 pch_gpio_set2_level = {
186 	.gpio32 = GPIO_LEVEL_LOW,  /* Native */
187 	.gpio33 = GPIO_LEVEL_LOW,  /* Input */
188 	.gpio34 = GPIO_LEVEL_LOW,  /* Unused */
189 	.gpio35 = GPIO_LEVEL_LOW,  /* Unused */
190 	.gpio36 = GPIO_LEVEL_HIGH, /* Output HIGH */
191 	.gpio37 = GPIO_LEVEL_LOW,  /* Input */
192 	.gpio38 = GPIO_LEVEL_LOW,  /* Input */
193 	.gpio39 = GPIO_LEVEL_LOW,  /* Input */
194 	.gpio40 = GPIO_LEVEL_LOW,  /* Unused */
195 	.gpio41 = GPIO_LEVEL_LOW,  /* Unused */
196 	.gpio42 = GPIO_LEVEL_LOW,  /* Unused */
197 	.gpio43 = GPIO_LEVEL_LOW,  /* Unused */
198 	.gpio44 = GPIO_LEVEL_LOW,  /* Input */
199 	.gpio45 = GPIO_LEVEL_LOW,  /* Input */
200 	.gpio46 = GPIO_LEVEL_LOW,  /* Input */
201 	.gpio47 = GPIO_LEVEL_LOW,  /* Native */
202 	.gpio48 = GPIO_LEVEL_LOW,  /* Unused */
203 	.gpio49 = GPIO_LEVEL_LOW,  /* Unused */
204 	.gpio50 = GPIO_LEVEL_LOW,  /* Unused */
205 	.gpio51 = GPIO_LEVEL_LOW,  /* Input */
206 	.gpio52 = GPIO_LEVEL_LOW,  /* Input */
207 	.gpio53 = GPIO_LEVEL_HIGH, /* Input */
208 	.gpio54 = GPIO_LEVEL_LOW,  /* Input */
209 	.gpio55 = GPIO_LEVEL_LOW,  /* Input */
210 	.gpio56 = GPIO_LEVEL_LOW,  /* Unused */
211 	.gpio57 = GPIO_LEVEL_LOW,  /* Input */
212 	.gpio58 = GPIO_LEVEL_LOW,  /* Unused */
213 	.gpio59 = GPIO_LEVEL_LOW,  /* Unused */
214 	.gpio60 = GPIO_LEVEL_HIGH, /* Output HIGH */
215 	.gpio61 = GPIO_LEVEL_LOW,  /* Unused */
216 	.gpio62 = GPIO_LEVEL_LOW,  /* Native */
217 	.gpio63 = GPIO_LEVEL_LOW,  /* Native */
218 };
219 
220 static const struct pch_gpio_set3 pch_gpio_set3_mode = {
221 	.gpio64 = GPIO_MODE_NONE,   /* Unused */
222 	.gpio65 = GPIO_MODE_NONE,   /* Unused */
223 	.gpio66 = GPIO_MODE_NONE,   /* Unused */
224 	.gpio67 = GPIO_MODE_NONE,   /* Unused */
225 	.gpio68 = GPIO_MODE_GPIO,   /* Input - DGPU_PWR_EN */
226 	.gpio69 = GPIO_MODE_NONE,   /* Unused */
227 	.gpio70 = GPIO_MODE_NONE,   /* Unused */
228 	.gpio71 = GPIO_MODE_NONE,   /* Unused */
229 	.gpio72 = GPIO_MODE_NONE,   /* Unused */
230 	.gpio73 = GPIO_MODE_NATIVE, /* Native - PCIECLKRQ0# WLAN clock request */
231 	.gpio74 = GPIO_MODE_NONE,   /* Unused */
232 	.gpio75 = GPIO_MODE_GPIO,   /* Input - SMB_ME1_DAT */
233 };
234 
235 static const struct pch_gpio_set3 pch_gpio_set3_direction = {
236 	.gpio64 = GPIO_DIR_INPUT,   /* Unused */
237 	.gpio65 = GPIO_DIR_INPUT,   /* Unused */
238 	.gpio66 = GPIO_DIR_INPUT,   /* Unused */
239 	.gpio67 = GPIO_DIR_INPUT,   /* Unused */
240 	.gpio68 = GPIO_DIR_INPUT,   /* Input */
241 	.gpio69 = GPIO_DIR_INPUT,   /* Unused */
242 	.gpio70 = GPIO_DIR_INPUT,   /* Unused */
243 	.gpio71 = GPIO_DIR_INPUT,   /* Unused */
244 	.gpio72 = GPIO_DIR_INPUT,   /* Unused */
245 	.gpio73 = GPIO_DIR_INPUT,   /* Native */
246 	.gpio74 = GPIO_DIR_INPUT,   /* Unused */
247 	.gpio75 = GPIO_DIR_INPUT,   /* Input */
248 };
249 
250 static const struct pch_gpio_set3 pch_gpio_set3_level = {
251 	.gpio64 = GPIO_LEVEL_LOW,   /* Unused */
252 	.gpio65 = GPIO_LEVEL_LOW,   /* Unused */
253 	.gpio66 = GPIO_LEVEL_LOW,   /* Unused */
254 	.gpio67 = GPIO_LEVEL_LOW,   /* Unused */
255 	.gpio68 = GPIO_LEVEL_LOW,   /* Input */
256 	.gpio69 = GPIO_LEVEL_LOW,   /* Unused */
257 	.gpio70 = GPIO_LEVEL_LOW,   /* Unused */
258 	.gpio71 = GPIO_LEVEL_LOW,   /* Unused */
259 	.gpio72 = GPIO_LEVEL_LOW,   /* Unused */
260 	.gpio73 = GPIO_LEVEL_LOW,   /* Native */
261 	.gpio74 = GPIO_LEVEL_LOW,   /* Unused */
262 	.gpio75 = GPIO_LEVEL_LOW,   /* Input */
263 };
264 
265 const struct pch_gpio_map mainboard_gpio_map = {
266 	.set1 = {
267 		.mode		= &pch_gpio_set1_mode,
268 		.direction	= &pch_gpio_set1_direction,
269 		.level		= &pch_gpio_set1_level,
270 		.invert		= &pch_gpio_set1_invert,
271 
272 	},
273 	.set2 = {
274 		.mode		= &pch_gpio_set2_mode,
275 		.direction	= &pch_gpio_set2_direction,
276 		.level		= &pch_gpio_set2_level,
277 	},
278 	.set3 = {
279 		.mode		= &pch_gpio_set3_mode,
280 		.direction	= &pch_gpio_set3_direction,
281 		.level		= &pch_gpio_set3_level,
282 	},
283 };
284