1 /* SPDX-License-Identifier: GPL-2.0-only */
6 #include <southbridge/intel/common/gpio.h>
9 * GPIO SET 1 includes GPIO0 to GPIO31
12 static const struct pch_gpio_set1 pch_gpio_set1_mode
= {
13 .gpio0
= GPIO_MODE_GPIO
, /* CHP3_SERDBG */
14 .gpio1
= GPIO_MODE_GPIO
, /* SIO3_EXTSMI# */
15 .gpio2
= GPIO_MODE_NONE
,
16 .gpio3
= GPIO_MODE_NONE
,
17 .gpio4
= GPIO_MODE_NONE
,
18 .gpio5
= GPIO_MODE_NONE
,
19 .gpio6
= GPIO_MODE_NONE
,
20 .gpio7
= GPIO_MODE_NONE
,
21 .gpio8
= GPIO_MODE_GPIO
, /* CHP3_INTELBT_OFF# */
22 .gpio9
= GPIO_MODE_NATIVE
, /* USB_OC13# */
23 .gpio10
= GPIO_MODE_NATIVE
, /* USB_OC12# */
24 .gpio11
= GPIO_MODE_NONE
,
25 .gpio12
= GPIO_MODE_NONE
,
26 .gpio13
= GPIO_MODE_GPIO
, /* CHP3_DEBUG13 */
27 .gpio14
= GPIO_MODE_GPIO
, /* SIO3_WAKESCI# */
28 .gpio15
= GPIO_MODE_NONE
,
29 .gpio16
= GPIO_MODE_NONE
,
30 .gpio17
= GPIO_MODE_GPIO
, /* KBC3_DVP_MODE */
31 .gpio18
= GPIO_MODE_NATIVE
, /* MIN3_CLKREQ1# */
32 .gpio19
= GPIO_MODE_NONE
,
33 .gpio20
= GPIO_MODE_NONE
,
34 .gpio21
= GPIO_MODE_NONE
,
35 .gpio22
= GPIO_MODE_GPIO
, /* CHP3_BIOS_CRISIS# */
36 .gpio23
= GPIO_MODE_NONE
,
37 .gpio24
= GPIO_MODE_NONE
,
38 .gpio25
= GPIO_MODE_NATIVE
, /* MIN3_CLKREQ3# */
39 .gpio26
= GPIO_MODE_NATIVE
, /* LAN3_CLKREQ# */
40 .gpio27
= GPIO_MODE_NONE
,
41 .gpio28
= GPIO_MODE_NONE
,
42 .gpio29
= GPIO_MODE_NONE
,
43 .gpio30
= GPIO_MODE_NATIVE
, /* CHP3_SUSWARN# */
44 .gpio31
= GPIO_MODE_NATIVE
, /* ACPRESENT (pullup) */
47 static const struct pch_gpio_set1 pch_gpio_set1_direction
= {
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_INPUT
,
54 .gpio6
= GPIO_DIR_INPUT
,
55 .gpio7
= GPIO_DIR_INPUT
,
56 .gpio8
= GPIO_DIR_OUTPUT
,
57 .gpio9
= GPIO_DIR_INPUT
,
58 .gpio10
= GPIO_DIR_INPUT
,
59 .gpio11
= GPIO_DIR_INPUT
,
60 .gpio12
= GPIO_DIR_INPUT
,
61 .gpio13
= GPIO_DIR_INPUT
,
62 .gpio14
= GPIO_DIR_INPUT
,
63 .gpio15
= GPIO_DIR_INPUT
,
64 .gpio16
= GPIO_DIR_INPUT
,
65 .gpio17
= GPIO_DIR_INPUT
,
66 .gpio18
= GPIO_DIR_INPUT
,
67 .gpio19
= GPIO_DIR_INPUT
,
68 .gpio20
= GPIO_DIR_INPUT
,
69 .gpio21
= GPIO_DIR_INPUT
,
70 .gpio22
= GPIO_DIR_OUTPUT
,
71 .gpio23
= GPIO_DIR_INPUT
,
72 .gpio24
= GPIO_DIR_INPUT
,
73 .gpio25
= GPIO_DIR_INPUT
,
74 .gpio26
= GPIO_DIR_INPUT
,
75 .gpio27
= GPIO_DIR_INPUT
,
76 .gpio28
= GPIO_DIR_INPUT
,
77 .gpio29
= GPIO_DIR_INPUT
,
78 .gpio30
= GPIO_DIR_INPUT
,
79 .gpio31
= GPIO_DIR_INPUT
,
82 static const struct pch_gpio_set1 pch_gpio_set1_level
= {
83 .gpio0
= GPIO_LEVEL_LOW
,
84 .gpio1
= GPIO_LEVEL_LOW
,
85 .gpio2
= GPIO_LEVEL_LOW
,
86 .gpio3
= GPIO_LEVEL_LOW
,
87 .gpio4
= GPIO_LEVEL_LOW
,
88 .gpio5
= GPIO_LEVEL_LOW
,
89 .gpio6
= GPIO_LEVEL_LOW
,
90 .gpio7
= GPIO_LEVEL_LOW
,
91 .gpio8
= GPIO_LEVEL_HIGH
,
92 .gpio9
= GPIO_LEVEL_LOW
,
93 .gpio10
= GPIO_LEVEL_LOW
,
94 .gpio11
= GPIO_LEVEL_LOW
,
95 .gpio12
= GPIO_LEVEL_LOW
,
96 .gpio13
= GPIO_LEVEL_LOW
,
97 .gpio14
= GPIO_LEVEL_LOW
,
98 .gpio15
= GPIO_LEVEL_LOW
,
99 .gpio16
= GPIO_LEVEL_LOW
,
100 .gpio17
= GPIO_LEVEL_LOW
,
101 .gpio18
= GPIO_LEVEL_LOW
,
102 .gpio19
= GPIO_LEVEL_LOW
,
103 .gpio20
= GPIO_LEVEL_LOW
,
104 .gpio21
= GPIO_LEVEL_LOW
,
105 .gpio22
= GPIO_LEVEL_HIGH
,
106 .gpio23
= GPIO_LEVEL_LOW
,
107 .gpio24
= GPIO_LEVEL_LOW
,
108 .gpio25
= GPIO_LEVEL_LOW
,
109 .gpio26
= GPIO_LEVEL_LOW
,
110 .gpio27
= GPIO_LEVEL_LOW
,
111 .gpio28
= GPIO_LEVEL_LOW
,
112 .gpio29
= GPIO_LEVEL_LOW
,
113 .gpio30
= GPIO_LEVEL_LOW
,
114 .gpio31
= GPIO_LEVEL_LOW
,
118 * GPIO SET 2 includes GPIO32 to GPIO63
121 static const struct pch_gpio_set2 pch_gpio_set2_mode
= {
122 .gpio32
= GPIO_MODE_NATIVE
, /* PCI3_CLKRUN# */
123 .gpio33
= GPIO_MODE_NONE
,
124 .gpio34
= GPIO_MODE_NONE
,
125 .gpio35
= GPIO_MODE_GPIO
, /* CHP3_WLAN_OFF# */
126 .gpio36
= GPIO_MODE_GPIO
,
127 .gpio37
= GPIO_MODE_GPIO
, /* CHP3_FDI_OVRVLTG */
128 .gpio38
= GPIO_MODE_NONE
,
129 .gpio39
= GPIO_MODE_NONE
,
130 .gpio40
= GPIO_MODE_NATIVE
, /* USB3_OC1# */
131 .gpio41
= GPIO_MODE_NATIVE
, /* USB3_OC4# */
132 .gpio42
= GPIO_MODE_GPIO
, /* CHP3_REC_MODE# */
133 .gpio43
= GPIO_MODE_NATIVE
, /* USB3_OC8# */
134 .gpio44
= GPIO_MODE_GPIO
, /* CHP3_SMRT_CHG0_CTL2# */
135 .gpio45
= GPIO_MODE_GPIO
, /* CHP3_SMRT_CHG0_CTL3# */
136 .gpio46
= GPIO_MODE_GPIO
, /* CHP3_SMRT_CHG4_CTL2# */
137 .gpio47
= GPIO_MODE_GPIO
, /* CHP3_CHG_ENABLE0 */
138 .gpio48
= GPIO_MODE_GPIO
, /* CHP3_BT_OFF# */
139 .gpio49
= GPIO_MODE_NONE
,
140 .gpio50
= GPIO_MODE_NONE
,
141 .gpio51
= GPIO_MODE_NONE
,
142 .gpio52
= GPIO_MODE_NONE
,
143 .gpio53
= GPIO_MODE_NATIVE
,
144 .gpio54
= GPIO_MODE_NONE
,
145 .gpio55
= GPIO_MODE_GPIO
, /* STP_A16OVR */
146 .gpio56
= GPIO_MODE_GPIO
, /* CHP3_CHG_ENABLE4 */
147 .gpio57
= GPIO_MODE_GPIO
, /* CHP3_DEBUG10 */
148 .gpio58
= GPIO_MODE_NATIVE
, /* SIO3_THERM_SMCLK# */
149 .gpio59
= GPIO_MODE_NATIVE
, /* USB3_OC0# */
150 .gpio60
= GPIO_MODE_GPIO
, /* CHP3_DRAMRST_GATE */
151 .gpio61
= GPIO_MODE_NONE
,
152 .gpio62
= GPIO_MODE_NATIVE
, /* CHP3_SUSCLK */
153 .gpio63
= GPIO_MODE_NATIVE
, /* CHP3_SLPS5# */
156 static const struct pch_gpio_set2 pch_gpio_set2_direction
= {
157 .gpio32
= GPIO_DIR_INPUT
,
158 .gpio33
= GPIO_DIR_INPUT
,
159 .gpio34
= GPIO_DIR_INPUT
,
160 .gpio35
= GPIO_DIR_OUTPUT
,
161 .gpio36
= GPIO_DIR_INPUT
,
162 .gpio37
= GPIO_DIR_INPUT
,
163 .gpio38
= GPIO_DIR_INPUT
,
164 .gpio39
= GPIO_DIR_INPUT
,
165 .gpio40
= GPIO_DIR_INPUT
,
166 .gpio41
= GPIO_DIR_INPUT
,
167 .gpio42
= GPIO_DIR_INPUT
,
168 .gpio43
= GPIO_DIR_INPUT
,
169 .gpio44
= GPIO_DIR_OUTPUT
,
170 .gpio45
= GPIO_DIR_OUTPUT
,
171 .gpio46
= GPIO_DIR_OUTPUT
,
172 .gpio47
= GPIO_DIR_OUTPUT
,
173 .gpio48
= GPIO_DIR_OUTPUT
,
174 .gpio49
= GPIO_DIR_INPUT
,
175 .gpio50
= GPIO_DIR_INPUT
,
176 .gpio51
= GPIO_DIR_INPUT
,
177 .gpio52
= GPIO_DIR_INPUT
,
178 .gpio53
= GPIO_DIR_INPUT
,
179 .gpio54
= GPIO_DIR_INPUT
,
180 .gpio55
= GPIO_DIR_INPUT
,
181 .gpio56
= GPIO_DIR_OUTPUT
,
182 .gpio57
= GPIO_DIR_OUTPUT
,
183 .gpio58
= GPIO_DIR_INPUT
,
184 .gpio59
= GPIO_DIR_INPUT
,
185 .gpio60
= GPIO_DIR_OUTPUT
,
186 .gpio61
= GPIO_DIR_INPUT
,
187 .gpio62
= GPIO_DIR_INPUT
,
188 .gpio63
= GPIO_DIR_INPUT
,
191 static const struct pch_gpio_set2 pch_gpio_set2_level
= {
192 .gpio32
= GPIO_LEVEL_LOW
,
193 .gpio33
= GPIO_LEVEL_LOW
,
194 .gpio34
= GPIO_LEVEL_LOW
,
195 .gpio35
= GPIO_LEVEL_HIGH
,
196 .gpio36
= GPIO_LEVEL_LOW
,
197 .gpio37
= GPIO_LEVEL_LOW
,
198 .gpio38
= GPIO_LEVEL_LOW
,
199 .gpio39
= GPIO_LEVEL_LOW
,
200 .gpio40
= GPIO_LEVEL_LOW
,
201 .gpio41
= GPIO_LEVEL_LOW
,
202 .gpio42
= GPIO_LEVEL_LOW
,
203 .gpio43
= GPIO_LEVEL_LOW
,
204 .gpio44
= GPIO_LEVEL_HIGH
,
205 .gpio45
= GPIO_LEVEL_LOW
,
206 .gpio46
= GPIO_LEVEL_HIGH
,
207 .gpio47
= GPIO_LEVEL_HIGH
,
208 .gpio48
= GPIO_LEVEL_HIGH
,
209 .gpio49
= GPIO_LEVEL_LOW
,
210 .gpio50
= GPIO_LEVEL_LOW
,
211 .gpio51
= GPIO_LEVEL_LOW
,
212 .gpio52
= GPIO_LEVEL_LOW
,
213 .gpio53
= GPIO_LEVEL_LOW
,
214 .gpio54
= GPIO_LEVEL_LOW
,
215 .gpio55
= GPIO_LEVEL_LOW
,
216 .gpio56
= GPIO_LEVEL_HIGH
,
217 .gpio57
= GPIO_LEVEL_LOW
,
218 .gpio58
= GPIO_LEVEL_LOW
,
219 .gpio59
= GPIO_LEVEL_LOW
,
220 .gpio60
= GPIO_LEVEL_HIGH
,
221 .gpio61
= GPIO_LEVEL_LOW
,
222 .gpio62
= GPIO_LEVEL_LOW
,
223 .gpio63
= GPIO_LEVEL_LOW
,
227 * GPIO SET 3 includes GPIO64 to GPIO75
230 static const struct pch_gpio_set3 pch_gpio_set3_mode
= {
231 .gpio64
= GPIO_MODE_NATIVE
, /* CLK3_SIO48 */
232 .gpio65
= GPIO_MODE_NONE
,
233 .gpio66
= GPIO_MODE_NONE
,
234 .gpio67
= GPIO_MODE_NONE
,
235 .gpio68
= GPIO_MODE_GPIO
, /* CHP3_SPI_WP */
236 .gpio69
= GPIO_MODE_NONE
,
237 .gpio70
= GPIO_MODE_NONE
,
238 .gpio71
= GPIO_MODE_NONE
,
239 .gpio72
= GPIO_MODE_NATIVE
, /* BATLOW# (pullup) */
240 .gpio73
= GPIO_MODE_GPIO
, /* CHP3_SMRT_CHG4_CTL3# */
241 .gpio74
= GPIO_MODE_NONE
,
242 .gpio75
= GPIO_MODE_NATIVE
, /* SIO3_THERM_SMDATA# */
245 static const struct pch_gpio_set3 pch_gpio_set3_direction
= {
246 .gpio64
= GPIO_DIR_INPUT
,
247 .gpio65
= GPIO_DIR_INPUT
,
248 .gpio66
= GPIO_DIR_INPUT
,
249 .gpio67
= GPIO_DIR_INPUT
,
250 .gpio68
= GPIO_DIR_INPUT
,
251 .gpio69
= GPIO_DIR_INPUT
,
252 .gpio70
= GPIO_DIR_INPUT
,
253 .gpio71
= GPIO_DIR_INPUT
,
254 .gpio72
= GPIO_DIR_INPUT
,
255 .gpio73
= GPIO_DIR_OUTPUT
,
256 .gpio74
= GPIO_DIR_INPUT
,
257 .gpio75
= GPIO_DIR_INPUT
,
260 static const struct pch_gpio_set3 pch_gpio_set3_level
= {
261 .gpio64
= GPIO_LEVEL_LOW
,
262 .gpio65
= GPIO_LEVEL_LOW
,
263 .gpio66
= GPIO_LEVEL_LOW
,
264 .gpio67
= GPIO_LEVEL_LOW
,
265 .gpio68
= GPIO_LEVEL_LOW
,
266 .gpio69
= GPIO_LEVEL_LOW
,
267 .gpio70
= GPIO_LEVEL_LOW
,
268 .gpio71
= GPIO_LEVEL_LOW
,
269 .gpio72
= GPIO_LEVEL_LOW
,
270 .gpio73
= GPIO_LEVEL_LOW
,
271 .gpio74
= GPIO_LEVEL_LOW
,
272 .gpio75
= GPIO_LEVEL_LOW
,
275 const struct pch_gpio_map mainboard_gpio_map
= {
277 .mode
= &pch_gpio_set1_mode
,
278 .direction
= &pch_gpio_set1_direction
,
279 .level
= &pch_gpio_set1_level
,
282 .mode
= &pch_gpio_set2_mode
,
283 .direction
= &pch_gpio_set2_direction
,
284 .level
= &pch_gpio_set2_level
,
287 .mode
= &pch_gpio_set3_mode
,
288 .direction
= &pch_gpio_set3_direction
,
289 .level
= &pch_gpio_set3_level
,