xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-rockchip/grf_rk3066.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2017 Paweł Jarosz <paweljarosz3691@gmail.com>
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _ASM_ARCH_GRF_RK3066_H
8*4882a593Smuzhiyun #define _ASM_ARCH_GRF_RK3066_H
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun struct rk3066_grf_gpio_lh {
11*4882a593Smuzhiyun 	u32 l;
12*4882a593Smuzhiyun 	u32 h;
13*4882a593Smuzhiyun };
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun struct rk3066_grf {
16*4882a593Smuzhiyun 	struct rk3066_grf_gpio_lh gpio_dir[7];
17*4882a593Smuzhiyun 	struct rk3066_grf_gpio_lh gpio_do[7];
18*4882a593Smuzhiyun 	struct rk3066_grf_gpio_lh gpio_en[7];
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun 	u32 gpio0a_iomux;
21*4882a593Smuzhiyun 	u32 gpio0b_iomux;
22*4882a593Smuzhiyun 	u32 gpio0c_iomux;
23*4882a593Smuzhiyun 	u32 gpio0d_iomux;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 	u32 gpio1a_iomux;
26*4882a593Smuzhiyun 	u32 gpio1b_iomux;
27*4882a593Smuzhiyun 	u32 gpio1c_iomux;
28*4882a593Smuzhiyun 	u32 gpio1d_iomux;
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	u32 gpio2a_iomux;
31*4882a593Smuzhiyun 	u32 gpio2b_iomux;
32*4882a593Smuzhiyun 	u32 gpio2c_iomux;
33*4882a593Smuzhiyun 	u32 gpio2d_iomux;
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	u32 gpio3a_iomux;
36*4882a593Smuzhiyun 	u32 gpio3b_iomux;
37*4882a593Smuzhiyun 	u32 gpio3c_iomux;
38*4882a593Smuzhiyun 	u32 gpio3d_iomux;
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun 	u32 gpio4a_iomux;
41*4882a593Smuzhiyun 	u32 gpio4b_iomux;
42*4882a593Smuzhiyun 	u32 gpio4c_iomux;
43*4882a593Smuzhiyun 	u32 gpio4d_iomux;
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun 	u32 reserved0[5];
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun 	u32 gpio6b_iomux;
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun 	u32 reserved1[2];
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun 	struct rk3066_grf_gpio_lh gpio_pull[7];
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun 	u32 soc_con0;
54*4882a593Smuzhiyun 	u32 soc_con1;
55*4882a593Smuzhiyun 	u32 soc_con2;
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun 	u32 soc_status0;
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun 	u32 dmac1_con[3];
60*4882a593Smuzhiyun 	u32 dmac2_con[4];
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 	u32 uoc0_con[3];
63*4882a593Smuzhiyun 	u32 uoc1_con[4];
64*4882a593Smuzhiyun 	u32 ddrc_con;
65*4882a593Smuzhiyun 	u32 ddrc_stat;
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun 	u32 reserved2[10];
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun 	u32 os_reg[4];
70*4882a593Smuzhiyun };
71*4882a593Smuzhiyun check_member(rk3066_grf, os_reg[3], 0x01d4);
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun /* GRF_GPIO0A_IOMUX */
74*4882a593Smuzhiyun enum {
75*4882a593Smuzhiyun 	GPIO0A6_SHIFT		= 12,
76*4882a593Smuzhiyun 	GPIO0A6_MASK		= 1 << GPIO0A6_SHIFT,
77*4882a593Smuzhiyun 	GPIO0A6_GPIO		= 0,
78*4882a593Smuzhiyun 	GPIO0A6_HOST_DRV_VBUS,
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun 	GPIO0A5_SHIFT		= 10,
81*4882a593Smuzhiyun 	GPIO0A5_MASK		= 1 << GPIO0A5_SHIFT,
82*4882a593Smuzhiyun 	GPIO0A5_GPIO		= 0,
83*4882a593Smuzhiyun 	GPIO0A5_OTG_DRV_VBUS,
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun 	GPIO0A4_SHIFT		= 8,
86*4882a593Smuzhiyun 	GPIO0A4_MASK		= 1 << GPIO0A4_SHIFT,
87*4882a593Smuzhiyun 	GPIO0A4_GPIO		= 0,
88*4882a593Smuzhiyun 	GPIO0A4_PWM1,
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun 	GPIO0A3_SHIFT		= 6,
91*4882a593Smuzhiyun 	GPIO0A3_MASK		= 1 << GPIO0A3_SHIFT,
92*4882a593Smuzhiyun 	GPIO0A3_GPIO		= 0,
93*4882a593Smuzhiyun 	GPIO0A3_PWM0
94*4882a593Smuzhiyun };
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun /* GRF_GPIO0D_IOMUX */
97*4882a593Smuzhiyun enum {
98*4882a593Smuzhiyun 	GPIO0D7_SHIFT		= 14,
99*4882a593Smuzhiyun 	GPIO0D7_MASK		= 1 << GPIO0D7_SHIFT,
100*4882a593Smuzhiyun 	GPIO0D7_GPIO		= 0,
101*4882a593Smuzhiyun 	GPIO0D7_PWM3,
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun 	GPIO0D6_SHIFT		= 12,
104*4882a593Smuzhiyun 	GPIO0D6_MASK		= 1 << GPIO0D6_SHIFT,
105*4882a593Smuzhiyun 	GPIO0D6_GPIO		= 0,
106*4882a593Smuzhiyun 	GPIO0D6_PWM2
107*4882a593Smuzhiyun };
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun /* GRF_GPIO1A_IOMUX */
110*4882a593Smuzhiyun enum {
111*4882a593Smuzhiyun 	GPIO1A7_SHIFT		= 14,
112*4882a593Smuzhiyun 	GPIO1A7_MASK		= 3 << GPIO1A7_SHIFT,
113*4882a593Smuzhiyun 	GPIO1A7_GPIO		= 0,
114*4882a593Smuzhiyun 	GPIO1A7_UART1_RTS_N,
115*4882a593Smuzhiyun 	GPIO1A7_SPI0_TXD,
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun 	GPIO1A6_SHIFT		= 12,
118*4882a593Smuzhiyun 	GPIO1A6_MASK		= 3 << GPIO1A6_SHIFT,
119*4882a593Smuzhiyun 	GPIO1A6_GPIO		= 0,
120*4882a593Smuzhiyun 	GPIO1A6_UART1_CTS_N,
121*4882a593Smuzhiyun 	GPIO1A6_SPI0_RXD,
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun 	GPIO1A5_SHIFT		= 10,
124*4882a593Smuzhiyun 	GPIO1A5_MASK		= 3 << GPIO1A5_SHIFT,
125*4882a593Smuzhiyun 	GPIO1A5_GPIO		= 0,
126*4882a593Smuzhiyun 	GPIO1A5_UART1_SOUT,
127*4882a593Smuzhiyun 	GPIO1A5_SPI0_CLK,
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun 	GPIO1A4_SHIFT		= 8,
130*4882a593Smuzhiyun 	GPIO1A4_MASK		= 3 << GPIO1A4_SHIFT,
131*4882a593Smuzhiyun 	GPIO1A4_GPIO		= 0,
132*4882a593Smuzhiyun 	GPIO1A4_UART1_SIN,
133*4882a593Smuzhiyun 	GPIO1A4_SPI0_CSN0,
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun 	GPIO1A3_SHIFT		= 6,
136*4882a593Smuzhiyun 	GPIO1A3_MASK		= 1 << GPIO1A3_SHIFT,
137*4882a593Smuzhiyun 	GPIO1A3_GPIO		= 0,
138*4882a593Smuzhiyun 	GPIO1A3_UART0_RTS_N,
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun 	GPIO1A2_SHIFT		= 4,
141*4882a593Smuzhiyun 	GPIO1A2_MASK		= 1 << GPIO1A2_SHIFT,
142*4882a593Smuzhiyun 	GPIO1A2_GPIO		= 0,
143*4882a593Smuzhiyun 	GPIO1A2_UART0_CTS_N,
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun 	GPIO1A1_SHIFT		= 2,
146*4882a593Smuzhiyun 	GPIO1A1_MASK		= 1 << GPIO1A1_SHIFT,
147*4882a593Smuzhiyun 	GPIO1A1_GPIO		= 0,
148*4882a593Smuzhiyun 	GPIO1A1_UART0_SOUT,
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun 	GPIO1A0_SHIFT		= 0,
151*4882a593Smuzhiyun 	GPIO1A0_MASK		= 1 << GPIO1A0_SHIFT,
152*4882a593Smuzhiyun 	GPIO1A0_GPIO		= 0,
153*4882a593Smuzhiyun 	GPIO1A0_UART0_SIN
154*4882a593Smuzhiyun };
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun /* GRF_GPIO1B_IOMUX */
157*4882a593Smuzhiyun enum {
158*4882a593Smuzhiyun 	GPIO1B1_SHIFT		= 2,
159*4882a593Smuzhiyun 	GPIO1B1_MASK		= 1 << GPIO1B1_SHIFT,
160*4882a593Smuzhiyun 	GPIO1B1_GPIO		= 0,
161*4882a593Smuzhiyun 	GPIO1B1_UART2_SOUT,
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun 	GPIO1B0_SHIFT		= 0,
164*4882a593Smuzhiyun 	GPIO1B0_MASK		= 1 << GPIO1B0_SHIFT,
165*4882a593Smuzhiyun 	GPIO1B0_GPIO		= 0,
166*4882a593Smuzhiyun 	GPIO1B0_UART2_SIN
167*4882a593Smuzhiyun };
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun /* GRF_GPIO2C_IOMUX */
170*4882a593Smuzhiyun enum {
171*4882a593Smuzhiyun 	GPIO2C7_SHIFT		= 14,
172*4882a593Smuzhiyun 	GPIO2C7_MASK		= 3 << GPIO2C7_SHIFT,
173*4882a593Smuzhiyun 	GPIO2C7_GPIO		= 0,
174*4882a593Smuzhiyun 	GPIO2C7_LCDC1_DATA23,
175*4882a593Smuzhiyun 	GPIO2C7_SPI1_CSN1,
176*4882a593Smuzhiyun 	GPIO2C7_HSADC_DATA4,
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun 	GPIO2C6_SHIFT		= 12,
179*4882a593Smuzhiyun 	GPIO2C6_MASK		= 3 << GPIO2C6_SHIFT,
180*4882a593Smuzhiyun 	GPIO2C6_GPIO		= 0,
181*4882a593Smuzhiyun 	GPIO2C6_LCDC1_DATA22,
182*4882a593Smuzhiyun 	GPIO2C6_SPI1_RXD,
183*4882a593Smuzhiyun 	GPIO2C6_HSADC_DATA3,
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun 	GPIO2C5_SHIFT		= 10,
186*4882a593Smuzhiyun 	GPIO2C5_MASK		= 3 << GPIO2C5_SHIFT,
187*4882a593Smuzhiyun 	GPIO2C5_GPIO		= 0,
188*4882a593Smuzhiyun 	GPIO2C5_LCDC1_DATA21,
189*4882a593Smuzhiyun 	GPIO2C5_SPI1_TXD,
190*4882a593Smuzhiyun 	GPIO2C5_HSADC_DATA2,
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun 	GPIO2C4_SHIFT		= 8,
193*4882a593Smuzhiyun 	GPIO2C4_MASK		= 3 << GPIO2C4_SHIFT,
194*4882a593Smuzhiyun 	GPIO2C4_GPIO		= 0,
195*4882a593Smuzhiyun 	GPIO2C4_LCDC1_DATA20,
196*4882a593Smuzhiyun 	GPIO2C4_SPI1_CSN0,
197*4882a593Smuzhiyun 	GPIO2C4_HSADC_DATA1,
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun 	GPIO2C3_SHIFT		= 6,
200*4882a593Smuzhiyun 	GPIO2C3_MASK		= 3 << GPIO2C3_SHIFT,
201*4882a593Smuzhiyun 	GPIO2C3_GPIO		= 0,
202*4882a593Smuzhiyun 	GPIO2C3_LCDC1_DATA19,
203*4882a593Smuzhiyun 	GPIO2C3_SPI1_CLK,
204*4882a593Smuzhiyun 	GPIO2C3_HSADC_DATA0
205*4882a593Smuzhiyun };
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun /* GRF_GPIO2D_IOMUX */
208*4882a593Smuzhiyun enum {
209*4882a593Smuzhiyun 	GPIO2D7_SHIFT		= 14,
210*4882a593Smuzhiyun 	GPIO2D7_MASK		= 1 << GPIO2D7_SHIFT,
211*4882a593Smuzhiyun 	GPIO2D7_GPIO		= 0,
212*4882a593Smuzhiyun 	GPIO2D7_I2C1_SCL,
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun 	GPIO2D6_SHIFT		= 12,
215*4882a593Smuzhiyun 	GPIO2D6_MASK		= 1 << GPIO2D6_SHIFT,
216*4882a593Smuzhiyun 	GPIO2D6_GPIO		= 0,
217*4882a593Smuzhiyun 	GPIO2D6_I2C1_SDA,
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun 	GPIO2D5_SHIFT		= 10,
220*4882a593Smuzhiyun 	GPIO2D5_MASK		= 1 << GPIO2D5_SHIFT,
221*4882a593Smuzhiyun 	GPIO2D5_GPIO		= 0,
222*4882a593Smuzhiyun 	GPIO2D5_I2C0_SCL,
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun 	GPIO2D4_SHIFT		= 8,
225*4882a593Smuzhiyun 	GPIO2D4_MASK		= 1 << GPIO2D4_SHIFT,
226*4882a593Smuzhiyun 	GPIO2D4_GPIO		= 0,
227*4882a593Smuzhiyun 	GPIO2D4_I2C0_SDA
228*4882a593Smuzhiyun 
229*4882a593Smuzhiyun };
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun /* GRF_GPIO3A_IOMUX */
232*4882a593Smuzhiyun enum {
233*4882a593Smuzhiyun 	GPIO3A7_SHIFT		= 14,
234*4882a593Smuzhiyun 	GPIO3A7_MASK		= 1 << GPIO3A7_SHIFT,
235*4882a593Smuzhiyun 	GPIO3A7_GPIO		= 0,
236*4882a593Smuzhiyun 	GPIO3A7_SDMMC0_WRITE_PRT,
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun 	GPIO3A6_SHIFT		= 12,
239*4882a593Smuzhiyun 	GPIO3A6_MASK		= 1 << GPIO3A6_SHIFT,
240*4882a593Smuzhiyun 	GPIO3A6_GPIO		= 0,
241*4882a593Smuzhiyun 	GPIO3A6_SDMMC0_RSTN_OUT,
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun 	GPIO3A5_SHIFT		= 10,
244*4882a593Smuzhiyun 	GPIO3A5_MASK		= 1 << GPIO3A5_SHIFT,
245*4882a593Smuzhiyun 	GPIO3A5_GPIO		= 0,
246*4882a593Smuzhiyun 	GPIO3A5_I2C4_SCL,
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun 	GPIO3A4_SHIFT		= 8,
249*4882a593Smuzhiyun 	GPIO3A4_MASK		= 1 << GPIO3A4_SHIFT,
250*4882a593Smuzhiyun 	GPIO3A4_GPIO		= 0,
251*4882a593Smuzhiyun 	GPIO3A4_I2C4_SDA,
252*4882a593Smuzhiyun 
253*4882a593Smuzhiyun 	GPIO3A3_SHIFT		= 6,
254*4882a593Smuzhiyun 	GPIO3A3_MASK		= 1 << GPIO3A3_SHIFT,
255*4882a593Smuzhiyun 	GPIO3A3_GPIO		= 0,
256*4882a593Smuzhiyun 	GPIO3A3_I2C3_SCL,
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun 	GPIO3A2_SHIFT		= 4,
259*4882a593Smuzhiyun 	GPIO3A2_MASK		= 1 << GPIO3A2_SHIFT,
260*4882a593Smuzhiyun 	GPIO3A2_GPIO		= 0,
261*4882a593Smuzhiyun 	GPIO3A2_I2C3_SDA,
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun 	GPIO3A1_SHIFT		= 2,
264*4882a593Smuzhiyun 	GPIO3A1_MASK		= 1 << GPIO3A1_SHIFT,
265*4882a593Smuzhiyun 	GPIO3A1_GPIO		= 0,
266*4882a593Smuzhiyun 	GPIO3A1_I2C2_SCL,
267*4882a593Smuzhiyun 
268*4882a593Smuzhiyun 	GPIO3A0_SHIFT		= 0,
269*4882a593Smuzhiyun 	GPIO3A0_MASK		= 1 << GPIO3A0_SHIFT,
270*4882a593Smuzhiyun 	GPIO3A0_GPIO		= 0,
271*4882a593Smuzhiyun 	GPIO3A0_I2C2_SDA,
272*4882a593Smuzhiyun };
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun /* GRF_GPIO3B_IOMUX */
275*4882a593Smuzhiyun enum {
276*4882a593Smuzhiyun 	GPIO3B7_SHIFT		= 14,
277*4882a593Smuzhiyun 	GPIO3B7_MASK		= 1 << GPIO3B7_SHIFT,
278*4882a593Smuzhiyun 	GPIO3B7_GPIO		= 0,
279*4882a593Smuzhiyun 	GPIO3B7_SDMMC0_WRITE_PRT,
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun 	GPIO3B6_SHIFT		= 12,
282*4882a593Smuzhiyun 	GPIO3B6_MASK		= 1 << GPIO3B6_SHIFT,
283*4882a593Smuzhiyun 	GPIO3B6_GPIO		= 0,
284*4882a593Smuzhiyun 	GPIO3B6_SDMMC0_DETECT_N,
285*4882a593Smuzhiyun 
286*4882a593Smuzhiyun 	GPIO3B5_SHIFT		= 10,
287*4882a593Smuzhiyun 	GPIO3B5_MASK		= 1 << GPIO3B5_SHIFT,
288*4882a593Smuzhiyun 	GPIO3B5_GPIO		= 0,
289*4882a593Smuzhiyun 	GPIO3B5_SDMMC0_DATA3,
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun 	GPIO3B4_SHIFT		= 8,
292*4882a593Smuzhiyun 	GPIO3B4_MASK		= 1 << GPIO3B4_SHIFT,
293*4882a593Smuzhiyun 	GPIO3B4_GPIO		= 0,
294*4882a593Smuzhiyun 	GPIO3B4_SDMMC0_DATA2,
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun 	GPIO3B3_SHIFT		= 6,
297*4882a593Smuzhiyun 	GPIO3B3_MASK		= 1 << GPIO3B3_SHIFT,
298*4882a593Smuzhiyun 	GPIO3B3_GPIO		= 0,
299*4882a593Smuzhiyun 	GPIO3B3_SDMMC0_DATA1,
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun 	GPIO3B2_SHIFT		= 4,
302*4882a593Smuzhiyun 	GPIO3B2_MASK		= 1 << GPIO3B2_SHIFT,
303*4882a593Smuzhiyun 	GPIO3B2_GPIO		= 0,
304*4882a593Smuzhiyun 	GPIO3B2_SDMMC0_DATA0,
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun 	GPIO3B1_SHIFT		= 2,
307*4882a593Smuzhiyun 	GPIO3B1_MASK		= 1 << GPIO3B1_SHIFT,
308*4882a593Smuzhiyun 	GPIO3B1_GPIO		= 0,
309*4882a593Smuzhiyun 	GPIO3B1_SDMMC0_CMD,
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun 	GPIO3B0_SHIFT		= 0,
312*4882a593Smuzhiyun 	GPIO3B0_MASK		= 1 << GPIO3B0_SHIFT,
313*4882a593Smuzhiyun 	GPIO3B0_GPIO		= 0,
314*4882a593Smuzhiyun 	GPIO3B0_SDMMC0_CLKOUT
315*4882a593Smuzhiyun 
316*4882a593Smuzhiyun };
317*4882a593Smuzhiyun 
318*4882a593Smuzhiyun /* GRF_GPIO3C_IOMUX */
319*4882a593Smuzhiyun enum {
320*4882a593Smuzhiyun 	GPIO3C7_SHIFT		= 14,
321*4882a593Smuzhiyun 	GPIO3C7_MASK		= 1 << GPIO3C7_SHIFT,
322*4882a593Smuzhiyun 	GPIO3C7_GPIO		= 0,
323*4882a593Smuzhiyun 	GPIO3C7_SDMMC1_WRITE_PRT,
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun 	GPIO3C6_SHIFT		= 12,
326*4882a593Smuzhiyun 	GPIO3C6_MASK		= 1 << GPIO3C6_SHIFT,
327*4882a593Smuzhiyun 	GPIO3C6_GPIO		= 0,
328*4882a593Smuzhiyun 	GPIO3C6_SDMMC1_DETECT_N,
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun 	GPIO3C5_SHIFT		= 10,
331*4882a593Smuzhiyun 	GPIO3C5_MASK		= 1 << GPIO3C5_SHIFT,
332*4882a593Smuzhiyun 	GPIO3C5_GPIO		= 0,
333*4882a593Smuzhiyun 	GPIO3C5_SDMMC1_CLKOUT,
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun 	GPIO3C4_SHIFT		= 8,
336*4882a593Smuzhiyun 	GPIO3C4_MASK		= 1 << GPIO3C4_SHIFT,
337*4882a593Smuzhiyun 	GPIO3C4_GPIO		= 0,
338*4882a593Smuzhiyun 	GPIO3C4_SDMMC1_DATA3,
339*4882a593Smuzhiyun 
340*4882a593Smuzhiyun 	GPIO3C3_SHIFT		= 6,
341*4882a593Smuzhiyun 	GPIO3C3_MASK		= 1 << GPIO3C3_SHIFT,
342*4882a593Smuzhiyun 	GPIO3C3_GPIO		= 0,
343*4882a593Smuzhiyun 	GPIO3C3_SDMMC1_DATA2,
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun 	GPIO3C2_SHIFT		= 4,
346*4882a593Smuzhiyun 	GPIO3C2_MASK		= 1 << GPIO3C2_SHIFT,
347*4882a593Smuzhiyun 	GPIO3C2_GPIO		= 0,
348*4882a593Smuzhiyun 	GPIO3C2_SDMMC1_DATA1,
349*4882a593Smuzhiyun 
350*4882a593Smuzhiyun 	GPIO3C1_SHIFT		= 2,
351*4882a593Smuzhiyun 	GPIO3C1_MASK		= 1 << GPIO3C1_SHIFT,
352*4882a593Smuzhiyun 	GPIO3C1_GPIO		= 0,
353*4882a593Smuzhiyun 	GPIO3C1_SDMMC1_DATA0,
354*4882a593Smuzhiyun 
355*4882a593Smuzhiyun 	GPIO3C0_SHIFT		= 0,
356*4882a593Smuzhiyun 	GPIO3C0_MASK		= 1 << GPIO3C0_SHIFT,
357*4882a593Smuzhiyun 	GPIO3C0_GPIO		= 0,
358*4882a593Smuzhiyun 	GPIO3C0_SMMC1_CMD
359*4882a593Smuzhiyun };
360*4882a593Smuzhiyun 
361*4882a593Smuzhiyun /* GRF_GPIO3D_IOMUX */
362*4882a593Smuzhiyun enum {
363*4882a593Smuzhiyun 	GPIO3D7_SHIFT		= 14,
364*4882a593Smuzhiyun 	GPIO3D7_MASK		= 3 << GPIO3D7_SHIFT,
365*4882a593Smuzhiyun 	GPIO3D7_GPIO		= 0,
366*4882a593Smuzhiyun 	GPIO3D7_FLASH_DQS,
367*4882a593Smuzhiyun 	GPIO3D7_EMMC_CLKOUT,
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun 	GPIO3D6_SHIFT		= 12,
370*4882a593Smuzhiyun 	GPIO3D6_MASK		= 1 << GPIO3D6_SHIFT,
371*4882a593Smuzhiyun 	GPIO3D6_GPIO		= 0,
372*4882a593Smuzhiyun 	GPIO3D6_UART3_RTS_N,
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun 	GPIO3D5_SHIFT		= 10,
375*4882a593Smuzhiyun 	GPIO3D5_MASK		= 1 << GPIO3D5_SHIFT,
376*4882a593Smuzhiyun 	GPIO3D5_GPIO		= 0,
377*4882a593Smuzhiyun 	GPIO3D5_UART3_CTS_N,
378*4882a593Smuzhiyun 
379*4882a593Smuzhiyun 	GPIO3D4_SHIFT		= 8,
380*4882a593Smuzhiyun 	GPIO3D4_MASK		= 1 << GPIO3D4_SHIFT,
381*4882a593Smuzhiyun 	GPIO3D4_GPIO		= 0,
382*4882a593Smuzhiyun 	GPIO3D4_UART3_SOUT,
383*4882a593Smuzhiyun 
384*4882a593Smuzhiyun 	GPIO3D3_SHIFT		= 6,
385*4882a593Smuzhiyun 	GPIO3D3_MASK		= 1 << GPIO3D3_SHIFT,
386*4882a593Smuzhiyun 	GPIO3D3_GPIO		= 0,
387*4882a593Smuzhiyun 	GPIO3D3_UART3_SIN,
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun 	GPIO3D2_SHIFT		= 4,
390*4882a593Smuzhiyun 	GPIO3D2_MASK		= 1 << GPIO3D2_SHIFT,
391*4882a593Smuzhiyun 	GPIO3D2_GPIO		= 0,
392*4882a593Smuzhiyun 	GPIO3D2_SDMMC1_INT_N,
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun 	GPIO3D1_SHIFT		= 2,
395*4882a593Smuzhiyun 	GPIO3D1_MASK		= 1 << GPIO3D1_SHIFT,
396*4882a593Smuzhiyun 	GPIO3D1_GPIO		= 0,
397*4882a593Smuzhiyun 	GPIO3D1_SDMMC1_BACKEND_PWR,
398*4882a593Smuzhiyun 
399*4882a593Smuzhiyun 	GPIO3D0_SHIFT		= 0,
400*4882a593Smuzhiyun 	GPIO3D0_MASK		= 1 << GPIO3D0_SHIFT,
401*4882a593Smuzhiyun 	GPIO3D0_GPIO		= 0,
402*4882a593Smuzhiyun 	GPIO3D0_SDMMC1_PWR_EN
403*4882a593Smuzhiyun 
404*4882a593Smuzhiyun };
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun /* GRF_GPIO4A_IOMUX */
407*4882a593Smuzhiyun enum {
408*4882a593Smuzhiyun 	GPIO4A7_SHIFT		= 14,
409*4882a593Smuzhiyun 	GPIO4A7_MASK		= 1 << GPIO4A7_SHIFT,
410*4882a593Smuzhiyun 	GPIO4A7_GPIO		= 0,
411*4882a593Smuzhiyun 	GPIO4A7_FLASH_DATA15,
412*4882a593Smuzhiyun 
413*4882a593Smuzhiyun 	GPIO4A6_SHIFT		= 12,
414*4882a593Smuzhiyun 	GPIO4A6_MASK		= 1 << GPIO4A6_SHIFT,
415*4882a593Smuzhiyun 	GPIO4A6_GPIO		= 0,
416*4882a593Smuzhiyun 	GPIO4A6_FLASH_DATA14,
417*4882a593Smuzhiyun 
418*4882a593Smuzhiyun 	GPIO4A5_SHIFT		= 10,
419*4882a593Smuzhiyun 	GPIO4A5_MASK		= 1 << GPIO4A5_SHIFT,
420*4882a593Smuzhiyun 	GPIO4A5_GPIO		= 0,
421*4882a593Smuzhiyun 	GPIO4A5_FLASH_DATA13,
422*4882a593Smuzhiyun 
423*4882a593Smuzhiyun 	GPIO4A4_SHIFT		= 8,
424*4882a593Smuzhiyun 	GPIO4A4_MASK		= 1 << GPIO4A4_SHIFT,
425*4882a593Smuzhiyun 	GPIO4A4_GPIO		= 0,
426*4882a593Smuzhiyun 	GPIO4A4_FLASH_DATA12,
427*4882a593Smuzhiyun 
428*4882a593Smuzhiyun 	GPIO4A3_SHIFT		= 6,
429*4882a593Smuzhiyun 	GPIO4A3_MASK		= 1 << GPIO4A3_SHIFT,
430*4882a593Smuzhiyun 	GPIO4A3_GPIO		= 0,
431*4882a593Smuzhiyun 	GPIO4A3_FLASH_DATA11,
432*4882a593Smuzhiyun 
433*4882a593Smuzhiyun 	GPIO4A2_SHIFT		= 4,
434*4882a593Smuzhiyun 	GPIO4A2_MASK		= 1 << GPIO4A2_SHIFT,
435*4882a593Smuzhiyun 	GPIO4A2_GPIO		= 0,
436*4882a593Smuzhiyun 	GPIO4A2_FLASH_DATA10,
437*4882a593Smuzhiyun 
438*4882a593Smuzhiyun 	GPIO4A1_SHIFT		= 2,
439*4882a593Smuzhiyun 	GPIO4A1_MASK		= 1 << GPIO4A1_SHIFT,
440*4882a593Smuzhiyun 	GPIO4A1_GPIO		= 0,
441*4882a593Smuzhiyun 	GPIO4A1_FLASH_DATA9,
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun 	GPIO4A0_SHIFT		= 0,
444*4882a593Smuzhiyun 	GPIO4A0_MASK		= 1 << GPIO4A0_SHIFT,
445*4882a593Smuzhiyun 	GPIO4A0_GPIO		= 0,
446*4882a593Smuzhiyun 	GPIO4A0_FLASH_DATA8
447*4882a593Smuzhiyun 
448*4882a593Smuzhiyun };
449*4882a593Smuzhiyun 
450*4882a593Smuzhiyun /* GRF_GPIO4B_IOMUX */
451*4882a593Smuzhiyun enum {
452*4882a593Smuzhiyun 	GPIO4B7_SHIFT		= 14,
453*4882a593Smuzhiyun 	GPIO4B7_MASK		= 1 << GPIO4B7_SHIFT,
454*4882a593Smuzhiyun 	GPIO4B7_GPIO		= 0,
455*4882a593Smuzhiyun 	GPIO4B7_SPI0_CSN1,
456*4882a593Smuzhiyun 
457*4882a593Smuzhiyun 	GPIO4B6_SHIFT		= 12,
458*4882a593Smuzhiyun 	GPIO4B6_MASK		= 1 << GPIO4B6_SHIFT,
459*4882a593Smuzhiyun 	GPIO4B6_GPIO		= 0,
460*4882a593Smuzhiyun 	GPIO4B6_FLASH_CSN7,
461*4882a593Smuzhiyun 
462*4882a593Smuzhiyun 	GPIO4B5_SHIFT		= 10,
463*4882a593Smuzhiyun 	GPIO4B5_MASK		= 1 << GPIO4B5_SHIFT,
464*4882a593Smuzhiyun 	GPIO4B5_GPIO		= 0,
465*4882a593Smuzhiyun 	GPIO4B5_FLASH_CSN6,
466*4882a593Smuzhiyun 
467*4882a593Smuzhiyun 	GPIO4B4_SHIFT		= 8,
468*4882a593Smuzhiyun 	GPIO4B4_MASK		= 1 << GPIO4B4_SHIFT,
469*4882a593Smuzhiyun 	GPIO4B4_GPIO		= 0,
470*4882a593Smuzhiyun 	GPIO4B4_FLASH_CSN5,
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun 	GPIO4B3_SHIFT		= 6,
473*4882a593Smuzhiyun 	GPIO4B3_MASK		= 1 << GPIO4B3_SHIFT,
474*4882a593Smuzhiyun 	GPIO4B3_GPIO		= 0,
475*4882a593Smuzhiyun 	GPIO4B3_FLASH_CSN4,
476*4882a593Smuzhiyun 
477*4882a593Smuzhiyun 	GPIO4B2_SHIFT		= 4,
478*4882a593Smuzhiyun 	GPIO4B2_MASK		= 3 << GPIO4B2_SHIFT,
479*4882a593Smuzhiyun 	GPIO4B2_GPIO		= 0,
480*4882a593Smuzhiyun 	GPIO4B2_FLASH_CSN3,
481*4882a593Smuzhiyun 	GPIO4B2_EMMC_RSTN_OUT,
482*4882a593Smuzhiyun 
483*4882a593Smuzhiyun 	GPIO4B1_SHIFT		= 2,
484*4882a593Smuzhiyun 	GPIO4B1_MASK		= 3 << GPIO4B1_SHIFT,
485*4882a593Smuzhiyun 	GPIO4B1_GPIO		= 0,
486*4882a593Smuzhiyun 	GPIO4B1_FLASH_CSN2,
487*4882a593Smuzhiyun 	GPIO4B1_EMMC_CMD,
488*4882a593Smuzhiyun 
489*4882a593Smuzhiyun 	GPIO4B0_SHIFT		= 0,
490*4882a593Smuzhiyun 	GPIO4B0_MASK		= 1 << GPIO4B0_SHIFT,
491*4882a593Smuzhiyun 	GPIO4B0_GPIO		= 0,
492*4882a593Smuzhiyun 	GPIO4B0_FLASH_CSN1
493*4882a593Smuzhiyun };
494*4882a593Smuzhiyun 
495*4882a593Smuzhiyun /* GRF_SOC_CON0 */
496*4882a593Smuzhiyun enum {
497*4882a593Smuzhiyun 	SMC_MUX_CON_SHIFT	= 13,
498*4882a593Smuzhiyun 	SMC_MUX_CON_MASK	= 1 << SMC_MUX_CON_SHIFT,
499*4882a593Smuzhiyun 
500*4882a593Smuzhiyun 	NOC_REMAP_SHIFT		= 12,
501*4882a593Smuzhiyun 	NOC_REMAP_MASK		= 1 << NOC_REMAP_SHIFT,
502*4882a593Smuzhiyun 
503*4882a593Smuzhiyun 	EMMC_FLASH_SEL_SHIFT	= 11,
504*4882a593Smuzhiyun 	EMMC_FLASH_SEL_MASK	= 1 << EMMC_FLASH_SEL_SHIFT,
505*4882a593Smuzhiyun 
506*4882a593Smuzhiyun 	TZPC_REVISION_SHIFT	= 7,
507*4882a593Smuzhiyun 	TZPC_REVISION_MASK	= 0xf << TZPC_REVISION_SHIFT,
508*4882a593Smuzhiyun 
509*4882a593Smuzhiyun 	L2CACHE_ACC_SHIFT	= 5,
510*4882a593Smuzhiyun 	L2CACHE_ACC_MASK	= 3 << L2CACHE_ACC_SHIFT,
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun 	L2RD_WAIT_SHIFT		= 3,
513*4882a593Smuzhiyun 	L2RD_WAIT_MASK		= 3 << L2RD_WAIT_SHIFT,
514*4882a593Smuzhiyun 
515*4882a593Smuzhiyun 	IMEMRD_WAIT_SHIFT	= 1,
516*4882a593Smuzhiyun 	IMEMRD_WAIT_MASK	= 3 << IMEMRD_WAIT_SHIFT,
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun 	SOC_REMAP_SHIFT		= 0,
519*4882a593Smuzhiyun 	SOC_REMAP_MASK		= 1 << SOC_REMAP_SHIFT,
520*4882a593Smuzhiyun };
521*4882a593Smuzhiyun 
522*4882a593Smuzhiyun /* GRF_SOC_CON1 */
523*4882a593Smuzhiyun enum {
524*4882a593Smuzhiyun 	RKI2C4_SEL_SHIFT	= 15,
525*4882a593Smuzhiyun 	RKI2C4_SEL_MASK		= 1 << RKI2C4_SEL_SHIFT,
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun 	RKI2C3_SEL_SHIFT	= 14,
528*4882a593Smuzhiyun 	RKI2C3_SEL_MASK		= 1 << RKI2C3_SEL_SHIFT,
529*4882a593Smuzhiyun 
530*4882a593Smuzhiyun 	RKI2C2_SEL_SHIFT	= 13,
531*4882a593Smuzhiyun 	RKI2C2_SEL_MASK		= 1 << RKI2C2_SEL_SHIFT,
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun 	RKI2C1_SEL_SHIFT	= 12,
534*4882a593Smuzhiyun 	RKI2C1_SEL_MASK		= 1 << RKI2C1_SEL_SHIFT,
535*4882a593Smuzhiyun 
536*4882a593Smuzhiyun 	RKI2C0_SEL_SHIFT	= 11,
537*4882a593Smuzhiyun 	RKI2C0_SEL_MASK		= 1 << RKI2C0_SEL_SHIFT,
538*4882a593Smuzhiyun 
539*4882a593Smuzhiyun 	VCODEC_SEL_SHIFT	= 10,
540*4882a593Smuzhiyun 	VCODEC_SEL_MASK		= 1 << VCODEC_SEL_SHIFT,
541*4882a593Smuzhiyun 
542*4882a593Smuzhiyun 	PERI_EMEM_PAUSE_SHIFT	= 9,
543*4882a593Smuzhiyun 	PERI_EMEM_PAUSE_MASK	= 1 << PERI_EMEM_PAUSE_SHIFT,
544*4882a593Smuzhiyun 
545*4882a593Smuzhiyun 	PERI_USB_PAUSE_SHIFT	= 8,
546*4882a593Smuzhiyun 	PERI_USB_PAUSE_MASK	= 1 << PERI_USB_PAUSE_SHIFT,
547*4882a593Smuzhiyun 
548*4882a593Smuzhiyun 	SMC_MUX_MODE_0_SHIFT	= 6,
549*4882a593Smuzhiyun 	SMC_MUX_MODE_0_MASK	= 1 << SMC_MUX_MODE_0_SHIFT,
550*4882a593Smuzhiyun 
551*4882a593Smuzhiyun 	SMC_SRAM_MW_0_SHIFT	= 4,
552*4882a593Smuzhiyun 	SMC_SRAM_MW_0_MASK	= 3 << SMC_SRAM_MW_0_SHIFT,
553*4882a593Smuzhiyun 
554*4882a593Smuzhiyun 	SMC_REMAP_0_SHIFT	= 3,
555*4882a593Smuzhiyun 	SMC_REMAP_0_MASK	= 1 << SMC_REMAP_0_SHIFT,
556*4882a593Smuzhiyun 
557*4882a593Smuzhiyun 	SMC_A_GT_M0_SYNC_SHIFT	= 2,
558*4882a593Smuzhiyun 	SMC_A_GT_M0_SYNC_MASK	= 1 << SMC_A_GT_M0_SYNC_SHIFT,
559*4882a593Smuzhiyun 
560*4882a593Smuzhiyun 	EMAC_SPEED_SHIFT	= 1,
561*4882a593Smuzhiyun 	EMAC_SPEEC_MASK		= 1 << EMAC_SPEED_SHIFT,
562*4882a593Smuzhiyun 
563*4882a593Smuzhiyun 	EMAC_MODE_SHIFT		= 0,
564*4882a593Smuzhiyun 	EMAC_MODE_MASK		= 1 << EMAC_MODE_SHIFT,
565*4882a593Smuzhiyun };
566*4882a593Smuzhiyun 
567*4882a593Smuzhiyun /* GRF_SOC_CON2 */
568*4882a593Smuzhiyun enum {
569*4882a593Smuzhiyun 
570*4882a593Smuzhiyun 	MSCH4_MAINDDR3_SHIFT	= 7,
571*4882a593Smuzhiyun 	MSCH4_MAINDDR3_MASK	= 1 << MSCH4_MAINDDR3_SHIFT,
572*4882a593Smuzhiyun 	MSCH4_MAINDDR3_DDR3	= 1,
573*4882a593Smuzhiyun 
574*4882a593Smuzhiyun 	EMAC_NEWRCV_EN_SHIFT	= 6,
575*4882a593Smuzhiyun 	EMAC_NEWRCV_EN_MASK	= 1 << EMAC_NEWRCV_EN_SHIFT,
576*4882a593Smuzhiyun 
577*4882a593Smuzhiyun 	SW_ADDR15_EN_SHIFT	= 5,
578*4882a593Smuzhiyun 	SW_ADDR15_EN_MASK	= 1 << SW_ADDR15_EN_SHIFT,
579*4882a593Smuzhiyun 
580*4882a593Smuzhiyun 	SW_ADDR16_EN_SHIFT	= 4,
581*4882a593Smuzhiyun 	SW_ADDR16_EN_MASK	= 1 << SW_ADDR16_EN_SHIFT,
582*4882a593Smuzhiyun 
583*4882a593Smuzhiyun 	SW_ADDR17_EN_SHIFT	= 3,
584*4882a593Smuzhiyun 	SW_ADDR17_EN_MASK	= 1 << SW_ADDR17_EN_SHIFT,
585*4882a593Smuzhiyun 
586*4882a593Smuzhiyun 	BANK2_TO_RANK_EN_SHIFT	= 2,
587*4882a593Smuzhiyun 	BANK2_TO_RANK_EN_MASK	= 1 << BANK2_TO_RANK_EN_SHIFT,
588*4882a593Smuzhiyun 
589*4882a593Smuzhiyun 	RANK_TO_ROW15_EN_SHIFT	= 1,
590*4882a593Smuzhiyun 	RANK_TO_ROW15_EN_MASK	= 1 << RANK_TO_ROW15_EN_SHIFT,
591*4882a593Smuzhiyun 
592*4882a593Smuzhiyun 	UPCTL_C_ACTIVE_IN_SHIFT = 0,
593*4882a593Smuzhiyun 	UPCTL_C_ACTIVE_IN_MASK	= 1 << UPCTL_C_ACTIVE_IN_SHIFT,
594*4882a593Smuzhiyun 	UPCTL_C_ACTIVE_IN_MAY	= 0,
595*4882a593Smuzhiyun 	UPCTL_C_ACTIVE_IN_WILL,
596*4882a593Smuzhiyun };
597*4882a593Smuzhiyun 
598*4882a593Smuzhiyun /* GRF_DDRC_CON0 */
599*4882a593Smuzhiyun enum {
600*4882a593Smuzhiyun 	DTO_LB_SHIFT		= 11,
601*4882a593Smuzhiyun 	DTO_LB_MASK		= 3 << DTO_LB_SHIFT,
602*4882a593Smuzhiyun 
603*4882a593Smuzhiyun 	DTO_TE_SHIFT		= 9,
604*4882a593Smuzhiyun 	DTO_TE_MASK		= 3 << DTO_TE_SHIFT,
605*4882a593Smuzhiyun 
606*4882a593Smuzhiyun 	DTO_PDR_SHIFT		= 7,
607*4882a593Smuzhiyun 	DTO_PDR_MASK		= 3 << DTO_PDR_SHIFT,
608*4882a593Smuzhiyun 
609*4882a593Smuzhiyun 	DTO_PDD_SHIFT		= 5,
610*4882a593Smuzhiyun 	DTO_PDD_MASK		= 3 << DTO_PDD_SHIFT,
611*4882a593Smuzhiyun 
612*4882a593Smuzhiyun 	DTO_IOM_SHIFT		= 3,
613*4882a593Smuzhiyun 	DTO_IOM_MASK		= 3 << DTO_IOM_SHIFT,
614*4882a593Smuzhiyun 
615*4882a593Smuzhiyun 	DTO_OE_SHIFT		= 1,
616*4882a593Smuzhiyun 	DTO_OE_MASK		= 3 << DTO_OE_SHIFT,
617*4882a593Smuzhiyun 
618*4882a593Smuzhiyun 	ATO_AE_SHIFT		= 0,
619*4882a593Smuzhiyun 	ATO_AE_MASK		= 1 << ATO_AE_SHIFT,
620*4882a593Smuzhiyun };
621*4882a593Smuzhiyun #endif
622