1 /*
2  * Copyright (c) 2018-2019, Intel Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 /**
8  * @file
9  * @brief GPIO macros for the Apollo Lake SoC
10  *
11  * This header file is used to specify the GPIO pins and macros for
12  * the Apollo Lake SoC.
13  */
14 
15 #ifndef __SOC_GPIO_H_
16 #define __SOC_GPIO_H_
17 
18 #define REG_PAD_OWNER_BASE              0x0020
19 #define REG_GPI_INT_STS_BASE            0x0100
20 #define PAD_CFG0_PMODE_MASK             (0x0F << 10)
21 
22 #define APL_GPIO_DEV_N_0		DT_NODELABEL(gpio_n_000_031)
23 #define APL_GPIO_0			0
24 #define APL_GPIO_1			1
25 #define APL_GPIO_2			2
26 #define APL_GPIO_3			3
27 #define APL_GPIO_4			4
28 #define APL_GPIO_5			5
29 #define APL_GPIO_6			6
30 #define APL_GPIO_7			7
31 #define APL_GPIO_8			8
32 #define APL_GPIO_9			9
33 #define APL_GPIO_10			10
34 #define APL_GPIO_11			11
35 #define APL_GPIO_12			12
36 #define APL_GPIO_13			13
37 #define APL_GPIO_14			14
38 #define APL_GPIO_15			15
39 #define APL_GPIO_16			16
40 #define APL_GPIO_17			17
41 #define APL_GPIO_18			18
42 #define APL_GPIO_19			19
43 #define APL_GPIO_20			20
44 #define APL_GPIO_21			21
45 #define APL_GPIO_22			22
46 #define APL_GPIO_23			23
47 #define APL_GPIO_24			24
48 #define APL_GPIO_25			25
49 #define APL_GPIO_26			26
50 #define APL_GPIO_27			27
51 #define APL_GPIO_28			28
52 #define APL_GPIO_29			29
53 #define APL_GPIO_30			30
54 #define APL_GPIO_31			31
55 
56 #define APL_GPIO_DEV_N_1		DT_NODELABEL(gpio_n_032_063)
57 #define APL_GPIO_32			0
58 #define APL_GPIO_33			1
59 #define APL_GPIO_34			2
60 #define APL_GPIO_35			3
61 #define APL_GPIO_36			4
62 #define APL_GPIO_37			5
63 #define APL_GPIO_38			6
64 #define APL_GPIO_39			7
65 #define APL_GPIO_40			8
66 #define APL_GPIO_41			9
67 #define APL_GPIO_42			10
68 #define APL_GPIO_43			11
69 #define APL_GPIO_44			12
70 #define APL_GPIO_45			13
71 #define APL_GPIO_46			14
72 #define APL_GPIO_47			15
73 #define APL_GPIO_48			16
74 #define APL_GPIO_49			17
75 #define APL_GPIO_62			18
76 #define APL_GPIO_63			19
77 #define APL_GPIO_64			20
78 #define APL_GPIO_65			21
79 #define APL_GPIO_66			22
80 #define APL_GPIO_67			23
81 #define APL_GPIO_68			24
82 #define APL_GPIO_69			25
83 #define APL_GPIO_70			26
84 #define APL_GPIO_71			27
85 #define APL_GPIO_72			28
86 #define APL_GPIO_73			29
87 #define APL_GPIO_TCK			30
88 #define APL_GPIO_TRST_B			31
89 
90 #define APL_GPIO_DEV_N_2		DT_NODELABEL(gpio_n_064_077)
91 #define APL_GPIO_TMS			0
92 #define APL_GPIO_TDI			1
93 #define APL_GPIO_CX_PMODE		2
94 #define APL_GPIO_CX_PREQ_B		3
95 #define APL_GPIO_JTAGX			4
96 #define APL_GPIO_CX_PRDY_B		5
97 #define APL_GPIO_TDO			6
98 #define APL_GPIO_CNV_BRI_DT		7
99 #define APL_GPIO_CNV_BRI_RSP		8
100 #define APL_GPIO_CNV_RGI_DT		9
101 #define APL_GPIO_CNV_RGI_RSP		10
102 #define APL_GPIO_SVID0_ALERT_B		11
103 #define APL_GPIO_SVOD0_DATA		12
104 #define APL_GPIO_SVOD0_CLK		13
105 
106 #define APL_GPIO_DEV_NW_0		DT_NODELABEL(gpio_nw_000_031)
107 #define APL_GPIO_187			0
108 #define APL_GPIO_188			1
109 #define APL_GPIO_189			2
110 #define APL_GPIO_190			3
111 #define APL_GPIO_191			4
112 #define APL_GPIO_192			5
113 #define APL_GPIO_193			6
114 #define APL_GPIO_194			7
115 #define APL_GPIO_195			8
116 #define APL_GPIO_196			9
117 #define APL_GPIO_197			10
118 #define APL_GPIO_198			11
119 #define APL_GPIO_199			12
120 #define APL_GPIO_200			13
121 #define APL_GPIO_201			14
122 #define APL_GPIO_202			15
123 #define APL_GPIO_203			16
124 #define APL_GPIO_204			17
125 #define APL_GPIO_PMC_SPI_FS0		18
126 #define APL_GPIO_PMC_SPI_FS1		19
127 #define APL_GPIO_PMC_SPI_FS2		20
128 #define APL_GPIO_PMC_SPI_RXD		21
129 #define APL_GPIO_PMC_SPI_TXC		22
130 #define APL_GPIO_PMC_SPI_CLK		23
131 #define APL_GPIO_PMIC_PWRGOOD		24
132 #define APL_GPIO_PMIC_RESET_B		25
133 #define APL_GPIO_213			26
134 #define APL_GPIO_214			27
135 #define APL_GPIO_215			28
136 #define APL_GPIO_PMIC_THERMTRIP_B	29
137 #define APL_GPIO_PMIC_STDBY		30
138 #define APL_GPIO_PROCHOT_B		31
139 
140 #define APL_GPIO_DEV_NW_1		DT_NODELABEL(gpio_nw_032_063)
141 #define APL_GPIO_PMIC_I2C_SCL		0
142 #define APL_GPIO_PMIC_I2C_SDA		1
143 #define APL_GPIO_74			2
144 #define APL_GPIO_75			3
145 #define APL_GPIO_76			4
146 #define APL_GPIO_77			5
147 #define APL_GPIO_78			6
148 #define APL_GPIO_79			7
149 #define APL_GPIO_80			8
150 #define APL_GPIO_81			9
151 #define APL_GPIO_82			10
152 #define APL_GPIO_83			11
153 #define APL_GPIO_84			12
154 #define APL_GPIO_85			13
155 #define APL_GPIO_86			14
156 #define APL_GPIO_87			15
157 #define APL_GPIO_88			16
158 #define APL_GPIO_89			17
159 #define APL_GPIO_90			18
160 #define APL_GPIO_91			19
161 #define APL_GPIO_92			20
162 #define APL_GPIO_97			21
163 #define APL_GPIO_98			22
164 #define APL_GPIO_99			23
165 #define APL_GPIO_100			24
166 #define APL_GPIO_101			25
167 #define APL_GPIO_102			26
168 #define APL_GPIO_103			27
169 #define APL_GPIO_FST_SPI_CLK_FB		28
170 #define APL_GPIO_104			29
171 #define APL_GPIO_105			30
172 #define APL_GPIO_106			31
173 
174 #define APL_GPIO_DEV_NW_2		DT_NODELABEL(gpio_nw_064_076)
175 #define APL_GPIO_109			0
176 #define APL_GPIO_110			1
177 #define APL_GPIO_111			2
178 #define APL_GPIO_112			3
179 #define APL_GPIO_113			4
180 #define APL_GPIO_116			5
181 #define APL_GPIO_117			6
182 #define APL_GPIO_118			7
183 #define APL_GPIO_119			8
184 #define APL_GPIO_120			9
185 #define APL_GPIO_121			10
186 #define APL_GPIO_122			11
187 #define APL_GPIO_123			12
188 
189 #define APL_GPIO_DEV_W_0		DT_NODELABEL(gpio_w_000_031)
190 #define APL_GPIO_124			0
191 #define APL_GPIO_125			1
192 #define APL_GPIO_126			2
193 #define APL_GPIO_127			3
194 #define APL_GPIO_128			4
195 #define APL_GPIO_129			5
196 #define APL_GPIO_130			6
197 #define APL_GPIO_131			7
198 #define APL_GPIO_132			8
199 #define APL_GPIO_133			9
200 #define APL_GPIO_134			10
201 #define APL_GPIO_135			11
202 #define APL_GPIO_136			12
203 #define APL_GPIO_137			13
204 #define APL_GPIO_138			14
205 #define APL_GPIO_139			15
206 #define APL_GPIO_146			16
207 #define APL_GPIO_147			17
208 #define APL_GPIO_148			18
209 #define APL_GPIO_149			19
210 #define APL_GPIO_150			20
211 #define APL_GPIO_151			21
212 #define APL_GPIO_152			22
213 #define APL_GPIO_153			23
214 #define APL_GPIO_154			24
215 #define APL_GPIO_155			25
216 #define APL_GPIO_209			26
217 #define APL_GPIO_210			27
218 #define APL_GPIO_211			28
219 #define APL_GPIO_212			29
220 #define APL_GPIO_OSC_CLK_OUT_0		30
221 #define APL_GPIO_OSC_CLK_OUT_1		31
222 
223 #define APL_GPIO_DEV_W_1		DT_NODELABEL(gpio_w_032_046)
224 #define APL_GPIO_OSC_CLK_OUT_2		0
225 #define APL_GPIO_OSC_CLK_OUT_3		1
226 #define APL_GPIO_OSC_CLK_OUT_4		2
227 #define APL_GPIO_PMU_AC_PRESENT		3
228 #define APL_GPIO_PMU_BATLOW_B		4
229 #define APL_GPIO_PMU_PLTRST_B		5
230 #define APL_GPIO_PMU_PWRBTN_B		6
231 #define APL_GPIO_PMU_RESETBUTTON_B	7
232 #define APL_GPIO_PMU_SLP_S0_B		8
233 #define APL_GPIO_PMU_SLP_S3_B		9
234 #define APL_GPIO_PMU_SLP_S4_B		10
235 #define APL_GPIO_PMU_SUSCLK		11
236 #define APL_GPIO_PMU_WAKE_B		12
237 #define APL_GPIO_SUS_STAT_B		13
238 #define APL_GPIO_SUSPWRDNACK		14
239 
240 #define APL_GPIO_DEV_SW_0		DT_NODELABEL(gpio_sw_000_031)
241 #define APL_GPIO_205			0
242 #define APL_GPIO_206			1
243 #define APL_GPIO_207			2
244 #define APL_GPIO_208			3
245 #define APL_GPIO_156			4
246 #define APL_GPIO_157			5
247 #define APL_GPIO_158			6
248 #define APL_GPIO_159			7
249 #define APL_GPIO_160			8
250 #define APL_GPIO_161			9
251 #define APL_GPIO_162			10
252 #define APL_GPIO_163			11
253 #define APL_GPIO_164			12
254 #define APL_GPIO_165			13
255 #define APL_GPIO_166			14
256 #define APL_GPIO_167			15
257 #define APL_GPIO_168			16
258 #define APL_GPIO_169			17
259 #define APL_GPIO_170			18
260 #define APL_GPIO_171			19
261 #define APL_GPIO_172			20
262 #define APL_GPIO_179			21
263 #define APL_GPIO_173			22
264 #define APL_GPIO_174			23
265 #define APL_GPIO_175			24
266 #define APL_GPIO_176			25
267 #define APL_GPIO_177			26
268 #define APL_GPIO_178			27
269 #define APL_GPIO_186			28
270 #define APL_GPIO_182			29
271 #define APL_GPIO_183			30
272 #define APL_GPIO_SMB_ALERTB		31
273 
274 #define APL_GPIO_DEV_SW_1		DT_NODELABEL(gpio_sw_032_042)
275 #define APL_GPIO_SMB_CLK		0
276 #define APL_GPIO_SMB_DATA		1
277 #define APL_GPIO_LPC_ILB_SERIRQ		2
278 #define APL_GPIO_LPC_CLKOUT0		3
279 #define APL_GPIO_LPC_CLKOUT1		4
280 #define APL_GPIO_LPC_AD0		5
281 #define APL_GPIO_LPC_AD1		6
282 #define APL_GPIO_LPC_AD2		7
283 #define APL_GPIO_LPC_AD3		8
284 #define APL_GPIO_LPC_CLKRUNB		9
285 #define APL_GPIO_LPC_FRAMEB		10
286 
287 #define GPIO_INTEL_NR_SUBDEVS		10
288 
289 #define REG_PAD_BASE_ADDR		0x000C
290 #define REG_GPI_INT_EN_BASE		0x0110
291 #define REG_PAD_HOST_SW_OWNER		0x0080
292 
293 #define GPIO_REG_BASE(reg_base) reg_base
294 
295 #define GPIO_PAD_BASE(reg_base) \
296 	(sys_read32(reg_base + REG_PAD_BASE_ADDR))
297 
298 #define GPIO_PAD_OWNERSHIP(raw_pin, pin_offset) \
299 	REG_PAD_OWNER_BASE + ((raw_pin >> 3) << 2)
300 
301 #define GPIO_OWNERSHIP_BIT(raw_pin) (raw_pin % 8)
302 
303 #define GPIO_RAW_PIN(pin, pin_offset) (pin_offset + pin)
304 
305 #define GPIO_INTERRUPT_BASE(cfg) \
306 	((cfg->pin_offset >> 5) << 2)
307 
308 #define GPIO_BASE(cfg) 0
309 
310 #define PIN_OFFSET 8U
311 
312 #endif /* __SOC_GPIO_H_ */
313