1 /*
2  * (C) Copyright 2016 Rockchip Electronics Co., Ltd
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6 #ifndef _ASM_ARCH_GRF_RV1108_H
7 #define _ASM_ARCH_GRF_RV1108_H
8 
9 #include <common.h>
10 
11 struct rv1108_grf {
12 	u32 reserved[4];
13 	u32 gpio1a_iomux;
14 	u32 gpio1b_iomux;
15 	u32 gpio1c_iomux;
16 	u32 gpio1d_iomux;
17 	u32 gpio2a_iomux;
18 	u32 gpio2b_iomux;
19 	u32 gpio2c_iomux;
20 	u32 gpio2d_iomux;
21 	u32 gpio3a_iomux;
22 	u32 gpio3b_iomux;
23 	u32 gpio3c_iomux;
24 	u32 gpio3d_iomux;
25 	u32 reserved1[52];
26 	u32 gpio1a_pull;
27 	u32 gpio1b_pull;
28 	u32 gpio1c_pull;
29 	u32 gpio1d_pull;
30 	u32 gpio2a_pull;
31 	u32 gpio2b_pull;
32 	u32 gpio2c_pull;
33 	u32 gpio2d_pull;
34 	u32 gpio3a_pull;
35 	u32 gpio3b_pull;
36 	u32 gpio3c_pull;
37 	u32 gpio3d_pull;
38 	u32 reserved2[52];
39 	u32 gpio1a_drv;
40 	u32 gpio1b_drv;
41 	u32 gpio1c_drv;
42 	u32 gpio1d_drv;
43 	u32 gpio2a_drv;
44 	u32 gpio2b_drv;
45 	u32 gpio2c_drv;
46 	u32 gpio2d_drv;
47 	u32 gpio3a_drv;
48 	u32 gpio3b_drv;
49 	u32 gpio3c_drv;
50 	u32 gpio3d_drv;
51 	u32 reserved3[50];
52 	u32 gpio1l_sr;
53 	u32 gpio1h_sr;
54 	u32 gpio2l_sr;
55 	u32 gpio2h_sr;
56 	u32 gpio3l_sr;
57 	u32 gpio3h_sr;
58 	u32 reserved4[26];
59 	u32 gpio1l_smt;
60 	u32 gpio1h_smt;
61 	u32 gpio2l_smt;
62 	u32 gpio2h_smt;
63 	u32 gpio3l_smt;
64 	u32 gpio3h_smt;
65 	u32 reserved5[24];
66 	u32 soc_con0;
67 	u32 soc_con1;
68 	u32 soc_con2;
69 	u32 soc_con3;
70 	u32 soc_con4;
71 	u32 soc_con5;
72 	u32 soc_con6;
73 	u32 soc_con7;
74 	u32 soc_con8;
75 	u32 soc_con9;
76 	u32 soc_con10;
77 	u32 soc_con11;
78 	u32 reserved6[20];
79 	u32 soc_status0;
80 	u32 soc_status1;
81 	u32 reserved7[30];
82 	u32 cpu_con0;
83 	u32 cpu_con1;
84 	u32 reserved8[30];
85 	u32 os_reg0;
86 	u32 os_reg1;
87 	u32 os_reg2;
88 	u32 os_reg3;
89 	u32 reserved9[29];
90 	u32 ddr_status;
91 	u32 reserved10[30];
92 	u32 sig_det_con;
93 	u32 reserved11[3];
94 	u32 sig_det_status;
95 	u32 reserved12[3];
96 	u32 sig_det_clr;
97 	u32 reserved13[23];
98 	u32 host_con0;
99 	u32 host_con1;
100 	u32 reserved14[2];
101 	u32 dma_con0;
102 	u32 dma_con1;
103 	u32 reserved15[539];
104 	u32 uoc_status;
105 	u32 host_status;
106 	u32 gmac_con0;
107 	u32 chip_id;
108 };
109 check_member(rv1108_grf, chip_id, 0xf90);
110 
111 /* GRF_GPIO1B_IOMUX */
112 enum {
113 	GPIO1B7_SHIFT		= 14,
114 	GPIO1B7_MASK		= 3 << GPIO1B7_SHIFT,
115 	GPIO1B7_GPIO		= 0,
116 	GPIO1B7_LCDC_D12,
117 	GPIO1B7_I2S_SDIO2_M0,
118 	GPIO1B7_GMAC_RXDV,
119 
120 	GPIO1B6_SHIFT		= 12,
121 	GPIO1B6_MASK		= 3 << GPIO1B6_SHIFT,
122 	GPIO1B6_GPIO		= 0,
123 	GPIO1B6_LCDC_D13,
124 	GPIO1B6_I2S_LRCLKTX_M0,
125 	GPIO1B6_GMAC_RXD1,
126 
127 	GPIO1B5_SHIFT		= 10,
128 	GPIO1B5_MASK		= 3 << GPIO1B5_SHIFT,
129 	GPIO1B5_GPIO		= 0,
130 	GPIO1B5_LCDC_D14,
131 	GPIO1B5_I2S_SDIO1_M0,
132 	GPIO1B5_GMAC_RXD0,
133 
134 	GPIO1B4_SHIFT		= 8,
135 	GPIO1B4_MASK		= 3 << GPIO1B4_SHIFT,
136 	GPIO1B4_GPIO		= 0,
137 	GPIO1B4_LCDC_D15,
138 	GPIO1B4_I2S_MCLK_M0,
139 	GPIO1B4_GMAC_TXEN,
140 
141 	GPIO1B3_SHIFT		= 6,
142 	GPIO1B3_MASK		= 3 << GPIO1B3_SHIFT,
143 	GPIO1B3_GPIO		= 0,
144 	GPIO1B3_LCDC_D16,
145 	GPIO1B3_I2S_SCLK_M0,
146 	GPIO1B3_GMAC_TXD1,
147 
148 	GPIO1B2_SHIFT		= 4,
149 	GPIO1B2_MASK		= 3 << GPIO1B2_SHIFT,
150 	GPIO1B2_GPIO		= 0,
151 	GPIO1B2_LCDC_D17,
152 	GPIO1B2_I2S_SDIO_M0,
153 	GPIO1B2_GMAC_TXD0,
154 
155 	GPIO1B1_SHIFT		= 2,
156 	GPIO1B1_MASK		= 3 << GPIO1B1_SHIFT,
157 	GPIO1B1_GPIO		= 0,
158 	GPIO1B1_LCDC_D9,
159 	GPIO1B1_PWM7,
160 
161 	GPIO1B0_SHIFT		= 0,
162 	GPIO1B0_MASK		= 3,
163 	GPIO1B0_GPIO		= 0,
164 	GPIO1B0_LCDC_D8,
165 	GPIO1B0_PWM6,
166 };
167 
168 /* GRF_GPIO1C_IOMUX */
169 enum {
170 	GPIO1C7_SHIFT		= 14,
171 	GPIO1C7_MASK		= 3 << GPIO1C7_SHIFT,
172 	GPIO1C7_GPIO		= 0,
173 	GPIO1C7_CIF_D5,
174 	GPIO1C7_I2S_SDIO2_M1,
175 
176 	GPIO1C6_SHIFT		= 12,
177 	GPIO1C6_MASK		= 3 << GPIO1C6_SHIFT,
178 	GPIO1C6_GPIO		= 0,
179 	GPIO1C6_CIF_D4,
180 	GPIO1C6_I2S_LRCLKTX_M1,
181 
182 	GPIO1C5_SHIFT		= 10,
183 	GPIO1C5_MASK		= 3 << GPIO1C5_SHIFT,
184 	GPIO1C5_GPIO		= 0,
185 	GPIO1C5_LCDC_CLK,
186 	GPIO1C5_GMAC_CLK,
187 
188 	GPIO1C4_SHIFT		= 8,
189 	GPIO1C4_MASK		= 3 << GPIO1C4_SHIFT,
190 	GPIO1C4_GPIO		= 0,
191 	GPIO1C4_LCDC_HSYNC,
192 	GPIO1C4_GMAC_MDC,
193 
194 	GPIO1C3_SHIFT		= 6,
195 	GPIO1C3_MASK		= 3 << GPIO1C3_SHIFT,
196 	GPIO1C3_GPIO		= 0,
197 	GPIO1C3_LCDC_VSYNC,
198 	GPIO1C3_GMAC_MDIO,
199 
200 	GPIO1C2_SHIFT		= 4,
201 	GPIO1C2_MASK		= 3 << GPIO1C2_SHIFT,
202 	GPIO1C2_GPIO		= 0,
203 	GPIO1C2_LCDC_EN,
204 	GPIO1C2_I2S_SDIO3_M0,
205 	GPIO1C2_GMAC_RXER,
206 
207 	GPIO1C1_SHIFT		= 2,
208 	GPIO1C1_MASK		= 3 << GPIO1C1_SHIFT,
209 	GPIO1C1_GPIO		= 0,
210 	GPIO1C1_LCDC_D10,
211 	GPIO1C1_I2S_SDI_M0,
212 	GPIO1C1_PWM4,
213 
214 	GPIO1C0_SHIFT           = 0,
215 	GPIO1C0_MASK		= 3,
216 	GPIO1C0_GPIO		= 0,
217 	GPIO1C0_LCDC_D11,
218 	GPIO1C0_I2S_LRCLKRX_M0,
219 };
220 
221 /* GRF_GPIO1D_OIMUX */
222 enum {
223 	GPIO1D7_SHIFT		= 14,
224 	GPIO1D7_MASK		= 3 << GPIO1D7_SHIFT,
225 	GPIO1D7_GPIO		= 0,
226 	GPIO1D7_HDMI_CEC,
227 	GPIO1D7_DSP_RTCK,
228 
229 	GPIO1D6_SHIFT		= 12,
230 	GPIO1D6_MASK		= 1 << GPIO1D6_SHIFT,
231 	GPIO1D6_GPIO		= 0,
232 	GPIO1D6_HDMI_HPD_M0,
233 
234 	GPIO1D5_SHIFT		= 10,
235 	GPIO1D5_MASK		= 3 << GPIO1D5_SHIFT,
236 	GPIO1D5_GPIO		= 0,
237 	GPIO1D5_UART2_RTSN,
238 	GPIO1D5_HDMI_SDA_M0,
239 
240 	GPIO1D4_SHIFT		= 8,
241 	GPIO1D4_MASK		= 3 << GPIO1D4_SHIFT,
242 	GPIO1D4_GPIO		= 0,
243 	GPIO1D4_UART2_CTSN,
244 	GPIO1D4_HDMI_SCL_M0,
245 
246 	GPIO1D3_SHIFT		= 6,
247 	GPIO1D3_MASK		= 3 << GPIO1D3_SHIFT,
248 	GPIO1D3_GPIO		= 0,
249 	GPIO1D3_UART0_SOUT,
250 	GPIO1D3_SPI_TXD_M0,
251 
252 	GPIO1D2_SHIFT		= 4,
253 	GPIO1D2_MASK		= 3 << GPIO1D2_SHIFT,
254 	GPIO1D2_GPIO		= 0,
255 	GPIO1D2_UART0_SIN,
256 	GPIO1D2_SPI_RXD_M0,
257 	GPIO1D2_DSP_TDI,
258 
259 	GPIO1D1_SHIFT		= 2,
260 	GPIO1D1_MASK		= 3 << GPIO1D1_SHIFT,
261 	GPIO1D1_GPIO		= 0,
262 	GPIO1D1_UART0_RTSN,
263 	GPIO1D1_SPI_CSN0_M0,
264 	GPIO1D1_DSP_TMS,
265 
266 	GPIO1D0_SHIFT		= 0,
267 	GPIO1D0_MASK		= 3,
268 	GPIO1D0_GPIO		= 0,
269 	GPIO1D0_UART0_CTSN,
270 	GPIO1D0_SPI_CLK_M0,
271 	GPIO1D0_DSP_TCK,
272 };
273 
274 /* GRF_GPIO2A_IOMUX */
275 enum {
276 	GPIO2A7_SHIFT		= 14,
277 	GPIO2A7_MASK		= 3 << GPIO2A7_SHIFT,
278 	GPIO2A7_GPIO		= 0,
279 	GPIO2A7_FLASH_D7,
280 	GPIO2A7_EMMC_D7,
281 
282 	GPIO2A6_SHIFT		= 12,
283 	GPIO2A6_MASK		= 3 << GPIO2A6_SHIFT,
284 	GPIO2A6_GPIO		= 0,
285 	GPIO2A6_FLASH_D6,
286 	GPIO2A6_EMMC_D6,
287 
288 	GPIO2A5_SHIFT           = 10,
289 	GPIO2A5_MASK            = 3 << GPIO2A5_SHIFT,
290 	GPIO2A5_GPIO            = 0,
291 	GPIO2A5_FLASH_D5,
292 	GPIO2A5_EMMC_D5,
293 
294 	GPIO2A4_SHIFT           = 8,
295 	GPIO2A4_MASK            = 3 << GPIO2A4_SHIFT,
296 	GPIO2A4_GPIO            = 0,
297 	GPIO2A4_FLASH_D4,
298 	GPIO2A4_EMMC_D4,
299 
300 	GPIO2A3_SHIFT           = 6,
301 	GPIO2A3_MASK            = 3 << GPIO2A3_SHIFT,
302 	GPIO2A3_GPIO            = 0,
303 	GPIO2A3_FLASH_D3,
304 	GPIO2A3_EMMC_D3,
305 	GPIO2A3_SFC_HOLD_IO3,
306 
307 	GPIO2A2_SHIFT           = 4,
308 	GPIO2A2_MASK            = 3 << GPIO2A2_SHIFT,
309 	GPIO2A2_GPIO            = 0,
310 	GPIO2A2_FLASH_D2,
311 	GPIO2A2_EMMC_D2,
312 	GPIO2A2_SFC_WP_IO2,
313 
314 	GPIO2A1_SHIFT           = 2,
315 	GPIO2A1_MASK            = 3 << GPIO2A1_SHIFT,
316 	GPIO2A1_GPIO            = 0,
317 	GPIO2A1_FLASH_D1,
318 	GPIO2A1_EMMC_D1,
319 	GPIO2A1_SFC_SO_IO1,
320 
321 	GPIO2A0_SHIFT           = 0,
322 	GPIO2A0_MASK            = 3 << GPIO2A0_SHIFT,
323 	GPIO2A0_GPIO            = 0,
324 	GPIO2A0_FLASH_D0,
325 	GPIO2A0_EMMC_D0,
326 	GPIO2A0_SFC_SI_IO0,
327 };
328 
329 /* GRF_GPIO2D_IOMUX */
330 enum {
331 	GPIO2B7_SHIFT		= 14,
332 	GPIO2B7_MASK		= 3 << GPIO2B7_SHIFT,
333 	GPIO2B7_GPIO		= 0,
334 	GPIO2B7_FLASH_CS1,
335 	GPIO2B7_SFC_CLK,
336 
337 	GPIO2B6_SHIFT           = 12,
338 	GPIO2B6_MASK            = 1 << GPIO2B6_SHIFT,
339 	GPIO2B6_GPIO            = 0,
340 	GPIO2B6_EMMC_CLKO,
341 
342 	GPIO2B5_SHIFT           = 10,
343 	GPIO2B5_MASK            = 1 << GPIO2B5_SHIFT,
344 	GPIO2B5_GPIO            = 0,
345 	GPIO2B5_FLASH_CS0,
346 
347 	GPIO2B4_SHIFT           = 8,
348 	GPIO2B4_MASK            = 3 << GPIO2B4_SHIFT,
349 	GPIO2B4_GPIO            = 0,
350 	GPIO2B4_FLASH_RDY,
351 	GPIO2B4_EMMC_CMD,
352 	GPIO2B4_SFC_CSN0,
353 
354 	GPIO2B3_SHIFT           = 6,
355 	GPIO2B3_MASK            = 1 << GPIO2B3_SHIFT,
356 	GPIO2B3_GPIO            = 0,
357 	GPIO2B3_FLASH_RDN,
358 
359 	GPIO2B2_SHIFT           = 4,
360 	GPIO2B2_MASK            = 1 << GPIO2B2_SHIFT,
361 	GPIO2B2_GPIO            = 0,
362 	GPIO2B2_FLASH_WRN,
363 
364 	GPIO2B1_SHIFT           = 2,
365 	GPIO2B1_MASK            = 1 << GPIO2B1_SHIFT,
366 	GPIO2B1_GPIO            = 0,
367 	GPIO2B1_FLASH_CLE,
368 
369 	GPIO2B0_SHIFT           = 0,
370 	GPIO2B0_MASK            = 1 << GPIO2B0_SHIFT,
371 	GPIO2B0_GPIO            = 0,
372 	GPIO2B0_FLASH_ALE,
373 };
374 
375 /* GRF_GPIO2D_IOMUX */
376 enum {
377 	GPIO2D7_SHIFT		= 14,
378 	GPIO2D7_MASK		= 1 << GPIO2D7_SHIFT,
379 	GPIO2D7_GPIO		= 0,
380 	GPIO2D7_SDIO_D0,
381 
382 	GPIO2D6_SHIFT		= 12,
383 	GPIO2D6_MASK		= 1 << GPIO2D6_SHIFT,
384 	GPIO2D6_GPIO		= 0,
385 	GPIO2D6_SDIO_CMD,
386 
387 	GPIO2D5_SHIFT		= 10,
388 	GPIO2D5_MASK		= 1 << GPIO2D5_SHIFT,
389 	GPIO2D5_GPIO		= 0,
390 	GPIO2D5_SDIO_CLKO,
391 
392 	GPIO2D4_SHIFT		= 8,
393 	GPIO2D4_MASK		= 1 << GPIO2D4_SHIFT,
394 	GPIO2D4_GPIO		= 0,
395 	GPIO2D4_I2C1_SCL,
396 
397 	GPIO2D3_SHIFT		= 6,
398 	GPIO2D3_MASK		= 1 << GPIO2D3_SHIFT,
399 	GPIO2D3_GPIO		= 0,
400 	GPIO2D3_I2C1_SDA,
401 
402 	GPIO2D2_SHIFT		= 4,
403 	GPIO2D2_MASK		= 3 << GPIO2D2_SHIFT,
404 	GPIO2D2_GPIO		= 0,
405 	GPIO2D2_UART2_SOUT_M0,
406 	GPIO2D2_JTAG_TCK,
407 
408 	GPIO2D1_SHIFT		= 2,
409 	GPIO2D1_MASK		= 3 << GPIO2D1_SHIFT,
410 	GPIO2D1_GPIO		= 0,
411 	GPIO2D1_UART2_SIN_M0,
412 	GPIO2D1_JTAG_TMS,
413 	GPIO2D1_DSP_TMS,
414 
415 	GPIO2D0_SHIFT		= 0,
416 	GPIO2D0_MASK		= 3,
417 	GPIO2D0_GPIO		= 0,
418 	GPIO2D0_UART0_CTSN,
419 	GPIO2D0_SPI_CLK_M0,
420 	GPIO2D0_DSP_TCK,
421 };
422 
423 /* GRF_GPIO3A_IOMUX */
424 enum {
425 	GPIO3A7_SHIFT		= 14,
426 	GPIO3A7_MASK		= 1 << GPIO3A7_SHIFT,
427 	GPIO3A7_GPIO		= 0,
428 
429 	GPIO3A6_SHIFT		= 12,
430 	GPIO3A6_MASK		= 1 << GPIO3A6_SHIFT,
431 	GPIO3A6_GPIO		= 0,
432 	GPIO3A6_UART1_SOUT,
433 
434 	GPIO3A5_SHIFT		= 10,
435 	GPIO3A5_MASK		= 1 << GPIO3A5_SHIFT,
436 	GPIO3A5_GPIO		= 0,
437 	GPIO3A5_UART1_SIN,
438 
439 	GPIO3A4_SHIFT		= 8,
440 	GPIO3A4_MASK		= 1 << GPIO3A4_SHIFT,
441 	GPIO3A4_GPIO		= 0,
442 	GPIO3A4_UART1_CTSN,
443 
444 	GPIO3A3_SHIFT		= 6,
445 	GPIO3A3_MASK		= 1 << GPIO3A3_SHIFT,
446 	GPIO3A3_GPIO		= 0,
447 	GPIO3A3_UART1_RTSN,
448 
449 	GPIO3A2_SHIFT		= 4,
450 	GPIO3A2_MASK		= 1 << GPIO3A2_SHIFT,
451 	GPIO3A2_GPIO		= 0,
452 	GPIO3A2_SDIO_D3,
453 
454 	GPIO3A1_SHIFT		= 2,
455 	GPIO3A1_MASK		= 1 << GPIO3A1_SHIFT,
456 	GPIO3A1_GPIO		= 0,
457 	GPIO3A1_SDIO_D2,
458 
459 	GPIO3A0_SHIFT		= 0,
460 	GPIO3A0_MASK		= 1,
461 	GPIO3A0_GPIO		= 0,
462 	GPIO3A0_SDIO_D1,
463 };
464 
465 /* GRF_GPIO3C_IOMUX */
466 enum {
467 	GPIO3C7_SHIFT		= 14,
468 	GPIO3C7_MASK		= 1 << GPIO3C7_SHIFT,
469 	GPIO3C7_GPIO		= 0,
470 	GPIO3C7_CIF_CLKI,
471 
472 	GPIO3C6_SHIFT		= 12,
473 	GPIO3C6_MASK		= 1 << GPIO3C6_SHIFT,
474 	GPIO3C6_GPIO		= 0,
475 	GPIO3C6_CIF_VSYNC,
476 
477 	GPIO3C5_SHIFT		= 10,
478 	GPIO3C5_MASK		= 1 << GPIO3C5_SHIFT,
479 	GPIO3C5_GPIO		= 0,
480 	GPIO3C5_SDMMC_CMD,
481 
482 	GPIO3C4_SHIFT		= 8,
483 	GPIO3C4_MASK		= 1 << GPIO3C4_SHIFT,
484 	GPIO3C4_GPIO		= 0,
485 	GPIO3C4_SDMMC_CLKO,
486 
487 	GPIO3C3_SHIFT		= 6,
488 	GPIO3C3_MASK		= 3 << GPIO3C3_SHIFT,
489 	GPIO3C3_GPIO		= 0,
490 	GPIO3C3_SDMMC_D0,
491 	GPIO3C3_UART2_SOUT_M1,
492 
493 	GPIO3C2_SHIFT		= 4,
494 	GPIO3C2_MASK		= 3 << GPIO3C2_SHIFT,
495 	GPIO3C2_GPIO		= 0,
496 	GPIO3C2_SDMMC_D1,
497 	GPIO3C2_UART2_SIN_M1,
498 
499 	GPIOC1_SHIFT		= 2,
500 	GPIOC1_MASK		= 1 << GPIOC1_SHIFT,
501 	GPIOC1_GPIO		= 0,
502 	GPIOC1_SDMMC_D2,
503 
504 	GPIOC0_SHIFT		= 0,
505 	GPIOC0_MASK		= 1,
506 	GPIO3C0_GPIO		= 0,
507 	GPIO3C0_SDMMC_D3,
508 };
509 #endif
510