blob: 20f4f53df395186e7f881eb1ea35e07aeb7b21af [file] [log] [blame]
Angel Pons89ab2502020-04-03 01:22:28 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Tobias Diedrichcee930a2017-02-12 14:09:06 +01002
3#include <southbridge/intel/common/gpio.h>
4
Peter Lemenkov6752b6152019-06-15 21:39:32 +02005static const struct pch_gpio_set1 pch_gpio_set1_mode = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +01006 .gpio0 = GPIO_MODE_GPIO,
7 .gpio1 = GPIO_MODE_GPIO,
8 .gpio2 = GPIO_MODE_GPIO, /* POUT1# (from palm sensor 1) */
9 .gpio3 = GPIO_MODE_GPIO,
10 .gpio4 = GPIO_MODE_GPIO, /* POUT2# (from palm sensor 2) */
11 .gpio5 = GPIO_MODE_GPIO,
12 .gpio6 = GPIO_MODE_GPIO, /* PA0_WAKEUP (To sensor hub PA0) */
13 .gpio7 = GPIO_MODE_GPIO, /* EC_SCI# (from EC) */
14 .gpio8 = GPIO_MODE_GPIO, /* EC_SMI# (from EC) */
15 .gpio9 = GPIO_MODE_GPIO,
16 .gpio10 = GPIO_MODE_GPIO,
17 .gpio11 = GPIO_MODE_GPIO,
18 .gpio12 = GPIO_MODE_GPIO,
19 .gpio13 = GPIO_MODE_GPIO,
20 .gpio14 = GPIO_MODE_GPIO,
21 .gpio15 = GPIO_MODE_GPIO, /* EC_LID_OUT# */
22 .gpio16 = GPIO_MODE_GPIO, /* RAM_ID2 */
23 .gpio17 = GPIO_MODE_GPIO,
24 .gpio20 = GPIO_MODE_GPIO,
25 .gpio21 = GPIO_MODE_GPIO,
26 .gpio22 = GPIO_MODE_GPIO,
27 .gpio23 = GPIO_MODE_GPIO,
28 .gpio24 = GPIO_MODE_GPIO,
29 .gpio26 = GPIO_MODE_GPIO,
30 .gpio27 = GPIO_MODE_GPIO, /* mSATA_DET# (from WWAN/mSATA mPCIe pin 51) */
31 .gpio28 = GPIO_MODE_GPIO,
32 .gpio29 = GPIO_MODE_GPIO,
33 .gpio30 = GPIO_MODE_GPIO,
34 .gpio31 = GPIO_MODE_GPIO,
35};
36
Peter Lemenkov6752b6152019-06-15 21:39:32 +020037static const struct pch_gpio_set1 pch_gpio_set1_direction = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +010038 .gpio0 = GPIO_DIR_OUTPUT,
39 .gpio1 = GPIO_DIR_OUTPUT,
40 .gpio2 = GPIO_DIR_INPUT,
41 .gpio3 = GPIO_DIR_OUTPUT,
42 .gpio4 = GPIO_DIR_INPUT,
43 .gpio5 = GPIO_DIR_OUTPUT,
44 .gpio6 = GPIO_DIR_INPUT,
45 .gpio7 = GPIO_DIR_INPUT,
46 .gpio8 = GPIO_DIR_INPUT,
47 .gpio9 = GPIO_DIR_OUTPUT,
48 .gpio10 = GPIO_DIR_OUTPUT,
49 .gpio11 = GPIO_DIR_OUTPUT,
50 .gpio12 = GPIO_DIR_OUTPUT,
51 .gpio13 = GPIO_DIR_OUTPUT,
52 .gpio14 = GPIO_DIR_OUTPUT,
53 .gpio15 = GPIO_DIR_INPUT,
54 .gpio16 = GPIO_DIR_INPUT,
55 .gpio17 = GPIO_DIR_INPUT,
56 .gpio20 = GPIO_DIR_OUTPUT,
57 .gpio21 = GPIO_DIR_OUTPUT,
58 .gpio22 = GPIO_DIR_OUTPUT,
59 .gpio23 = GPIO_DIR_OUTPUT,
60 .gpio24 = GPIO_DIR_OUTPUT,
61 .gpio26 = GPIO_DIR_OUTPUT,
62 .gpio27 = GPIO_DIR_INPUT,
63 .gpio28 = GPIO_DIR_OUTPUT,
64 .gpio29 = GPIO_DIR_OUTPUT,
65 .gpio30 = GPIO_DIR_OUTPUT,
66 .gpio31 = GPIO_DIR_INPUT,
67};
68
Peter Lemenkov6752b6152019-06-15 21:39:32 +020069static const struct pch_gpio_set1 pch_gpio_set1_level = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +010070 .gpio0 = GPIO_LEVEL_HIGH,
71 .gpio1 = GPIO_LEVEL_HIGH,
72 .gpio3 = GPIO_LEVEL_HIGH,
73 .gpio5 = GPIO_LEVEL_HIGH,
74 .gpio9 = GPIO_LEVEL_HIGH,
75 .gpio10 = GPIO_LEVEL_HIGH,
76 .gpio11 = GPIO_LEVEL_HIGH,
77 .gpio12 = GPIO_LEVEL_HIGH,
78 .gpio13 = GPIO_LEVEL_HIGH,
79 .gpio14 = GPIO_LEVEL_HIGH,
80 .gpio20 = GPIO_LEVEL_HIGH,
81 .gpio21 = GPIO_LEVEL_HIGH,
82 .gpio22 = GPIO_LEVEL_HIGH,
83 .gpio23 = GPIO_LEVEL_HIGH,
84 .gpio24 = GPIO_LEVEL_HIGH,
85 .gpio26 = GPIO_LEVEL_HIGH,
86 .gpio28 = GPIO_LEVEL_HIGH,
87 .gpio29 = GPIO_LEVEL_LOW,
88 .gpio30 = GPIO_LEVEL_HIGH,
89};
90
Peter Lemenkov6752b6152019-06-15 21:39:32 +020091static const struct pch_gpio_set1 pch_gpio_set1_reset = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +010092 .gpio24 = GPIO_RESET_RSMRST,
93};
94
Peter Lemenkov6752b6152019-06-15 21:39:32 +020095static const struct pch_gpio_set1 pch_gpio_set1_invert = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +010096 .gpio2 = GPIO_INVERT,
97 .gpio4 = GPIO_INVERT,
98 .gpio6 = GPIO_NO_INVERT,
99 .gpio7 = GPIO_INVERT,
100 .gpio8 = GPIO_INVERT,
101 .gpio15 = GPIO_INVERT,
102 .gpio16 = GPIO_NO_INVERT,
103 .gpio17 = GPIO_NO_INVERT,
104 .gpio27 = GPIO_NO_INVERT,
105 .gpio31 = GPIO_NO_INVERT,
106};
107
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200108static const struct pch_gpio_set1 pch_gpio_set1_blink = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100109};
110
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200111static const struct pch_gpio_set2 pch_gpio_set2_mode = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100112 .gpio33 = GPIO_MODE_GPIO, /* PCH_WLBT_OFF_5# (to WLAN mPCIe pin 5) */
113 /* GPIO34 marked as PCH_BT_ON#, but is native (STP_PCI#) */
114 .gpio35 = GPIO_MODE_GPIO, /* 3G_DET# (from WWAN/mSATA mPCIe pin 43) */
115 .gpio36 = GPIO_MODE_GPIO, /* PCH_WLBT_OFF_51# (to WLAN mPCIe pin 51) */
116 .gpio37 = GPIO_MODE_GPIO,
117 .gpio38 = GPIO_MODE_GPIO,
118 .gpio39 = GPIO_MODE_GPIO, /* 3G_OFF# (to WWAN/mSATA mPCIe pin 20) */
119 .gpio41 = GPIO_MODE_GPIO,
120 .gpio42 = GPIO_MODE_GPIO,
121 .gpio43 = GPIO_MODE_GPIO,
122 .gpio44 = GPIO_MODE_GPIO,
123 .gpio45 = GPIO_MODE_GPIO,
124 .gpio46 = GPIO_MODE_GPIO,
125 .gpio48 = GPIO_MODE_GPIO, /* RAM_ID3 */
126 .gpio49 = GPIO_MODE_GPIO,
127 .gpio50 = GPIO_MODE_GPIO,
128 .gpio51 = GPIO_MODE_GPIO,
129 .gpio52 = GPIO_MODE_GPIO,
130 .gpio53 = GPIO_MODE_GPIO,
131 .gpio54 = GPIO_MODE_GPIO,
132 /* GPIO55 marekd as WL_OFF#, but is native (GNT3#) */
133 .gpio56 = GPIO_MODE_GPIO,
134 .gpio57 = GPIO_MODE_GPIO,
135 .gpio60 = GPIO_MODE_GPIO, /* DRAMRST_CNTRL_PCH */
136};
137
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200138static const struct pch_gpio_set2 pch_gpio_set2_direction = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100139 .gpio33 = GPIO_DIR_OUTPUT,
140 .gpio35 = GPIO_DIR_INPUT,
141 .gpio36 = GPIO_DIR_OUTPUT,
142 .gpio37 = GPIO_DIR_OUTPUT,
143 .gpio38 = GPIO_DIR_INPUT,
144 .gpio39 = GPIO_DIR_OUTPUT,
145 .gpio41 = GPIO_DIR_OUTPUT,
146 .gpio42 = GPIO_DIR_OUTPUT,
147 .gpio43 = GPIO_DIR_OUTPUT,
148 .gpio44 = GPIO_DIR_OUTPUT,
149 .gpio45 = GPIO_DIR_OUTPUT,
150 .gpio46 = GPIO_DIR_OUTPUT,
151 .gpio48 = GPIO_DIR_INPUT,
152 .gpio49 = GPIO_DIR_OUTPUT,
153 .gpio50 = GPIO_DIR_OUTPUT,
154 .gpio51 = GPIO_DIR_OUTPUT,
155 .gpio52 = GPIO_DIR_OUTPUT,
156 .gpio53 = GPIO_DIR_OUTPUT,
157 .gpio54 = GPIO_DIR_OUTPUT,
158 .gpio56 = GPIO_DIR_OUTPUT,
159 .gpio57 = GPIO_DIR_INPUT,
160 .gpio60 = GPIO_DIR_OUTPUT,
161};
162
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200163static const struct pch_gpio_set2 pch_gpio_set2_level = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100164 .gpio33 = GPIO_LEVEL_HIGH,
165 .gpio36 = GPIO_LEVEL_HIGH,
166 .gpio37 = GPIO_LEVEL_HIGH,
167 .gpio39 = GPIO_LEVEL_LOW,
168 .gpio41 = GPIO_LEVEL_HIGH,
169 .gpio42 = GPIO_LEVEL_HIGH,
170 .gpio43 = GPIO_LEVEL_HIGH,
171 .gpio44 = GPIO_LEVEL_HIGH,
172 .gpio45 = GPIO_LEVEL_HIGH,
173 .gpio46 = GPIO_LEVEL_LOW,
174 .gpio49 = GPIO_LEVEL_HIGH,
175 .gpio50 = GPIO_LEVEL_LOW,
176 .gpio51 = GPIO_LEVEL_HIGH,
177 .gpio52 = GPIO_LEVEL_HIGH,
178 .gpio53 = GPIO_LEVEL_HIGH,
179 .gpio54 = GPIO_LEVEL_LOW,
180 .gpio56 = GPIO_LEVEL_HIGH,
181 .gpio60 = GPIO_LEVEL_HIGH,
182};
183
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200184static const struct pch_gpio_set2 pch_gpio_set2_reset = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100185};
186
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200187static const struct pch_gpio_set3 pch_gpio_set3_mode = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100188 .gpio64 = GPIO_MODE_GPIO,
189 .gpio65 = GPIO_MODE_GPIO,
190 .gpio68 = GPIO_MODE_GPIO,
191 .gpio69 = GPIO_MODE_GPIO,
192 .gpio70 = GPIO_MODE_GPIO, /* RAM_ID1 */
193 .gpio71 = GPIO_MODE_GPIO, /* RAM_ID0 */
194 .gpio72 = GPIO_MODE_GPIO,
195 .gpio74 = GPIO_MODE_GPIO,
196};
197
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200198static const struct pch_gpio_set3 pch_gpio_set3_direction = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100199 .gpio64 = GPIO_DIR_OUTPUT,
200 .gpio65 = GPIO_DIR_OUTPUT,
201 .gpio68 = GPIO_DIR_OUTPUT,
202 .gpio69 = GPIO_DIR_INPUT,
203 .gpio70 = GPIO_DIR_INPUT,
204 .gpio71 = GPIO_DIR_INPUT,
205 .gpio72 = GPIO_DIR_OUTPUT,
206 .gpio74 = GPIO_DIR_OUTPUT,
207};
208
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200209static const struct pch_gpio_set3 pch_gpio_set3_level = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100210 .gpio64 = GPIO_LEVEL_HIGH,
211 .gpio65 = GPIO_LEVEL_HIGH,
212 .gpio68 = GPIO_LEVEL_LOW,
213 .gpio72 = GPIO_LEVEL_HIGH,
214 .gpio74 = GPIO_LEVEL_HIGH,
215};
216
Peter Lemenkov6752b6152019-06-15 21:39:32 +0200217static const struct pch_gpio_set3 pch_gpio_set3_reset = {
Tobias Diedrichcee930a2017-02-12 14:09:06 +0100218};
219
220const struct pch_gpio_map mainboard_gpio_map = {
221 .set1 = {
222 .mode = &pch_gpio_set1_mode,
223 .direction = &pch_gpio_set1_direction,
224 .level = &pch_gpio_set1_level,
225 .blink = &pch_gpio_set1_blink,
226 .invert = &pch_gpio_set1_invert,
227 .reset = &pch_gpio_set1_reset,
228 },
229 .set2 = {
230 .mode = &pch_gpio_set2_mode,
231 .direction = &pch_gpio_set2_direction,
232 .level = &pch_gpio_set2_level,
233 .reset = &pch_gpio_set2_reset,
234 },
235 .set3 = {
236 .mode = &pch_gpio_set3_mode,
237 .direction = &pch_gpio_set3_direction,
238 .level = &pch_gpio_set3_level,
239 .reset = &pch_gpio_set3_reset,
240 },
241};