xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-rockchip/grf_rk3308.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2018 Rockchip Electronics Co., Ltd.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:     GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun #ifndef _ASM_ARCH_GRF_rk3308_H
7*4882a593Smuzhiyun #define _ASM_ARCH_GRF_rk3308_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <common.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun struct rk3308_grf {
12*4882a593Smuzhiyun 	unsigned int gpio0a_iomux;
13*4882a593Smuzhiyun 	unsigned int reserved0;
14*4882a593Smuzhiyun 	unsigned int gpio0b_iomux;
15*4882a593Smuzhiyun 	unsigned int reserved1;
16*4882a593Smuzhiyun 	unsigned int gpio0c_iomux;
17*4882a593Smuzhiyun 	unsigned int reserved2[3];
18*4882a593Smuzhiyun 	unsigned int gpio1a_iomux;
19*4882a593Smuzhiyun 	unsigned int reserved3;
20*4882a593Smuzhiyun 	unsigned int gpio1bl_iomux;
21*4882a593Smuzhiyun 	unsigned int gpio1bh_iomux;
22*4882a593Smuzhiyun 	unsigned int gpio1cl_iomux;
23*4882a593Smuzhiyun 	unsigned int gpio1ch_iomux;
24*4882a593Smuzhiyun 	unsigned int gpio1d_iomux;
25*4882a593Smuzhiyun 	unsigned int reserved4;
26*4882a593Smuzhiyun 	unsigned int gpio2a_iomux;
27*4882a593Smuzhiyun 	unsigned int reserved5;
28*4882a593Smuzhiyun 	unsigned int gpio2b_iomux;
29*4882a593Smuzhiyun 	unsigned int reserved6;
30*4882a593Smuzhiyun 	unsigned int gpio2c_iomux;
31*4882a593Smuzhiyun 	unsigned int reserved7[3];
32*4882a593Smuzhiyun 	unsigned int gpio3a_iomux;
33*4882a593Smuzhiyun 	unsigned int reserved8;
34*4882a593Smuzhiyun 	unsigned int gpio3b_iomux;
35*4882a593Smuzhiyun 	unsigned int reserved9[5];
36*4882a593Smuzhiyun 	unsigned int gpio4a_iomux;
37*4882a593Smuzhiyun 	unsigned int reserved33;
38*4882a593Smuzhiyun 	unsigned int gpio4b_iomux;
39*4882a593Smuzhiyun 	unsigned int reserved10;
40*4882a593Smuzhiyun 	unsigned int gpio4c_iomux;
41*4882a593Smuzhiyun 	unsigned int reserved11;
42*4882a593Smuzhiyun 	unsigned int gpio4d_iomux;
43*4882a593Smuzhiyun 	unsigned int reserved34;
44*4882a593Smuzhiyun 	unsigned int gpio0a_p;
45*4882a593Smuzhiyun 	unsigned int gpio0b_p;
46*4882a593Smuzhiyun 	unsigned int gpio0c_p;
47*4882a593Smuzhiyun 	unsigned int reserved12;
48*4882a593Smuzhiyun 	unsigned int gpio1a_p;
49*4882a593Smuzhiyun 	unsigned int gpio1b_p;
50*4882a593Smuzhiyun 	unsigned int gpio1c_p;
51*4882a593Smuzhiyun 	unsigned int gpio1d_p;
52*4882a593Smuzhiyun 	unsigned int gpio2a_p;
53*4882a593Smuzhiyun 	unsigned int gpio2b_p;
54*4882a593Smuzhiyun 	unsigned int gpio2c_p;
55*4882a593Smuzhiyun 	unsigned int reserved13;
56*4882a593Smuzhiyun 	unsigned int gpio3a_p;
57*4882a593Smuzhiyun 	unsigned int gpio3b_p;
58*4882a593Smuzhiyun 	unsigned int reserved14[2];
59*4882a593Smuzhiyun 	unsigned int gpio4a_p;
60*4882a593Smuzhiyun 	unsigned int gpio4b_p;
61*4882a593Smuzhiyun 	unsigned int gpio4c_p;
62*4882a593Smuzhiyun 	unsigned int gpio4d_p;
63*4882a593Smuzhiyun 	unsigned int reserved15[(0x100 - 0xec) / 4 - 1];
64*4882a593Smuzhiyun 	unsigned int gpio0a_e;
65*4882a593Smuzhiyun 	unsigned int gpio0b_e;
66*4882a593Smuzhiyun 	unsigned int gpio0c_e;
67*4882a593Smuzhiyun 	unsigned int reserved16;
68*4882a593Smuzhiyun 	unsigned int gpio1a_e;
69*4882a593Smuzhiyun 	unsigned int gpio1b_e;
70*4882a593Smuzhiyun 	unsigned int gpio1c_e;
71*4882a593Smuzhiyun 	unsigned int gpio1d_e;
72*4882a593Smuzhiyun 	unsigned int gpio2a_e;
73*4882a593Smuzhiyun 	unsigned int gpio2b_e;
74*4882a593Smuzhiyun 	unsigned int gpio2c_e;
75*4882a593Smuzhiyun 	unsigned int reserved17;
76*4882a593Smuzhiyun 	unsigned int gpio3a_e;
77*4882a593Smuzhiyun 	unsigned int gpio3b_e;
78*4882a593Smuzhiyun 	unsigned int reserved18[2];
79*4882a593Smuzhiyun 	unsigned int gpio4a_e;
80*4882a593Smuzhiyun 	unsigned int gpio4b_e;
81*4882a593Smuzhiyun 	unsigned int gpio4c_e;
82*4882a593Smuzhiyun 	unsigned int gpio4d_e;
83*4882a593Smuzhiyun 	unsigned int gpio0a_sr;
84*4882a593Smuzhiyun 	unsigned int gpio0b_sr;
85*4882a593Smuzhiyun 	unsigned int gpio0c_sr;
86*4882a593Smuzhiyun 	unsigned int reserved19;
87*4882a593Smuzhiyun 	unsigned int gpio1a_sr;
88*4882a593Smuzhiyun 	unsigned int gpio1b_sr;
89*4882a593Smuzhiyun 	unsigned int gpio1c_sr;
90*4882a593Smuzhiyun 	unsigned int gpio1d_sr;
91*4882a593Smuzhiyun 	unsigned int gpio2a_sr;
92*4882a593Smuzhiyun 	unsigned int gpio2b_sr;
93*4882a593Smuzhiyun 	unsigned int gpio2c_sr;
94*4882a593Smuzhiyun 	unsigned int reserved20;
95*4882a593Smuzhiyun 	unsigned int gpio3a_sr;
96*4882a593Smuzhiyun 	unsigned int gpio3b_sr;
97*4882a593Smuzhiyun 	unsigned int reserved21[2];
98*4882a593Smuzhiyun 	unsigned int gpio4a_sr;
99*4882a593Smuzhiyun 	unsigned int gpio4b_sr;
100*4882a593Smuzhiyun 	unsigned int gpio4c_sr;
101*4882a593Smuzhiyun 	unsigned int gpio4d_sr;
102*4882a593Smuzhiyun 	unsigned int gpio0a_smt;
103*4882a593Smuzhiyun 	unsigned int gpio0b_smt;
104*4882a593Smuzhiyun 	unsigned int gpio0c_smt;
105*4882a593Smuzhiyun 	unsigned int reserved22;
106*4882a593Smuzhiyun 	unsigned int gpio1a_smt;
107*4882a593Smuzhiyun 	unsigned int gpio1b_smt;
108*4882a593Smuzhiyun 	unsigned int gpio1c_smt;
109*4882a593Smuzhiyun 	unsigned int gpio1d_smt;
110*4882a593Smuzhiyun 	unsigned int gpio2a_smt;
111*4882a593Smuzhiyun 	unsigned int gpio2b_smt;
112*4882a593Smuzhiyun 	unsigned int gpio2c_smt;
113*4882a593Smuzhiyun 	unsigned int reserved23;
114*4882a593Smuzhiyun 	unsigned int gpio3a_smt;
115*4882a593Smuzhiyun 	unsigned int gpio3b_smt;
116*4882a593Smuzhiyun 	unsigned int reserved35[2];
117*4882a593Smuzhiyun 	unsigned int gpio4a_smt;
118*4882a593Smuzhiyun 	unsigned int gpio4b_smt;
119*4882a593Smuzhiyun 	unsigned int gpio4c_smt;
120*4882a593Smuzhiyun 	unsigned int gpio4d_smt;
121*4882a593Smuzhiyun 	unsigned int reserved24[(0x300 - 0x1EC) / 4 - 1];
122*4882a593Smuzhiyun 	unsigned int soc_con0;
123*4882a593Smuzhiyun 	unsigned int soc_con1;
124*4882a593Smuzhiyun 	unsigned int soc_con2;
125*4882a593Smuzhiyun 	unsigned int soc_con3;
126*4882a593Smuzhiyun 	unsigned int soc_con4;
127*4882a593Smuzhiyun 	unsigned int soc_con5;
128*4882a593Smuzhiyun 	unsigned int soc_con6;
129*4882a593Smuzhiyun 	unsigned int soc_con7;
130*4882a593Smuzhiyun 	unsigned int soc_con8;
131*4882a593Smuzhiyun 	unsigned int soc_con9;
132*4882a593Smuzhiyun 	unsigned int soc_con10;
133*4882a593Smuzhiyun 	unsigned int reserved25[(0x380 - 0x328) / 4 - 1];
134*4882a593Smuzhiyun 	unsigned int soc_status0;
135*4882a593Smuzhiyun 	unsigned int reserved26[(0x400 - 0x380) / 4 - 1];
136*4882a593Smuzhiyun 	unsigned int cpu_con0;
137*4882a593Smuzhiyun 	unsigned int cpu_con1;
138*4882a593Smuzhiyun 	unsigned int cpu_con2;
139*4882a593Smuzhiyun 	unsigned int reserved27[(0x420 - 0x408) / 4 - 1];
140*4882a593Smuzhiyun 	unsigned int cpu_status0;
141*4882a593Smuzhiyun 	unsigned int cpu_status1;
142*4882a593Smuzhiyun 	unsigned int reserved28[(0x440 - 0x424) / 4 - 1];
143*4882a593Smuzhiyun 	unsigned int pvtm_con0;
144*4882a593Smuzhiyun 	unsigned int pvtm_con1;
145*4882a593Smuzhiyun 	unsigned int pvtm_status0;
146*4882a593Smuzhiyun 	unsigned int pvtm_status1;
147*4882a593Smuzhiyun 	unsigned int reserved29[(0x460 - 0x44C) / 4 - 1];
148*4882a593Smuzhiyun 	unsigned int tsadc_tbl;
149*4882a593Smuzhiyun 	unsigned int tsadc_tbh;
150*4882a593Smuzhiyun 	unsigned int reserved30[(0x480 - 0x464) / 4 - 1];
151*4882a593Smuzhiyun 	unsigned int host0_con0;
152*4882a593Smuzhiyun 	unsigned int host0_con1;
153*4882a593Smuzhiyun 	unsigned int otg_con0;
154*4882a593Smuzhiyun 	unsigned int host0_status0;
155*4882a593Smuzhiyun 	unsigned int reserved31[(0x4a0 - 0x48C) / 4 - 1];
156*4882a593Smuzhiyun 	unsigned int mac_con0;
157*4882a593Smuzhiyun 	unsigned int upctl_con0;
158*4882a593Smuzhiyun 	unsigned int upctl_status0;
159*4882a593Smuzhiyun 	unsigned int reserved32[(0x500 - 0x4A8) / 4 - 1];
160*4882a593Smuzhiyun 	unsigned int os_reg0;
161*4882a593Smuzhiyun 	unsigned int os_reg1;
162*4882a593Smuzhiyun 	unsigned int os_reg2;
163*4882a593Smuzhiyun 	unsigned int os_reg3;
164*4882a593Smuzhiyun 	unsigned int os_reg4;
165*4882a593Smuzhiyun 	unsigned int os_reg5;
166*4882a593Smuzhiyun 	unsigned int os_reg6;
167*4882a593Smuzhiyun 	unsigned int os_reg7;
168*4882a593Smuzhiyun 	unsigned int os_reg8;
169*4882a593Smuzhiyun 	unsigned int os_reg9;
170*4882a593Smuzhiyun 	unsigned int os_reg10;
171*4882a593Smuzhiyun 	unsigned int os_reg11;
172*4882a593Smuzhiyun 	unsigned int reserved38[(0x600 - 0x52c) / 4 - 1];
173*4882a593Smuzhiyun 	unsigned int soc_con12;
174*4882a593Smuzhiyun 	unsigned int reserved39;
175*4882a593Smuzhiyun 	unsigned int soc_con13;
176*4882a593Smuzhiyun 	unsigned int soc_con14;
177*4882a593Smuzhiyun 	unsigned int soc_con15;
178*4882a593Smuzhiyun 	unsigned int reserved40[(0x800 - 0x610) / 4 - 1];
179*4882a593Smuzhiyun 	unsigned int chip_id;
180*4882a593Smuzhiyun };
181*4882a593Smuzhiyun check_member(rk3308_grf, gpio0a_p, 0xa0);
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun struct rk3308_sgrf {
184*4882a593Smuzhiyun 	unsigned int soc_con0;
185*4882a593Smuzhiyun 	unsigned int soc_con1;
186*4882a593Smuzhiyun 	unsigned int con_tzma_r0size;
187*4882a593Smuzhiyun 	unsigned int con_secure0;
188*4882a593Smuzhiyun 	unsigned int reserved0;
189*4882a593Smuzhiyun 	unsigned int clk_timer_en;
190*4882a593Smuzhiyun 	unsigned int clkgat_con;
191*4882a593Smuzhiyun 	unsigned int fastboot_addr;
192*4882a593Smuzhiyun 	unsigned int fastboot_en;
193*4882a593Smuzhiyun 	unsigned int reserved1[(0x30 - 0x24) / 4];
194*4882a593Smuzhiyun 	unsigned int srst_con;
195*4882a593Smuzhiyun };
196*4882a593Smuzhiyun check_member(rk3308_sgrf, fastboot_en, 0x20);
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun enum {
199*4882a593Smuzhiyun 	/* GPIO0B_IOMUX */
200*4882a593Smuzhiyun 	GPIO0B_SEL_SHIFT		= 0x0,
201*4882a593Smuzhiyun 	GPIO0B_SEL_MASK			= 0x3 << GPIO0B_SEL_SHIFT,
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun 	/* GPIO1D_IOMUX */
204*4882a593Smuzhiyun 	GPIO1D1_SEL_SHIFT		= 2,
205*4882a593Smuzhiyun 	GPIO1D1_SEL_MASK		= 0x3 << GPIO1D1_SEL_SHIFT,
206*4882a593Smuzhiyun 	GPIO1D1_SEL_UART1_TX		= 1,
207*4882a593Smuzhiyun 	GPIO1D0_SEL_SHIFT		= 0,
208*4882a593Smuzhiyun 	GPIO1D0_SEL_MASK		= 0x3 << GPIO1D0_SEL_SHIFT,
209*4882a593Smuzhiyun 	GPIO1D1_SEL_UART1_RX		= 1,
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun 	/* GPIO2A_IOMUX */
212*4882a593Smuzhiyun 	GPIO2A1_SEL_SHIFT		= 2,
213*4882a593Smuzhiyun 	GPIO2A1_SEL_MASK		= 0x3 << GPIO2A1_SEL_SHIFT,
214*4882a593Smuzhiyun 	GPIO2A1_SEL_UART0_TX		= 1,
215*4882a593Smuzhiyun 	GPIO2A0_SEL_SHIFT		= 0,
216*4882a593Smuzhiyun 	GPIO2A0_SEL_MASK		= 0x3 << GPIO2A0_SEL_SHIFT,
217*4882a593Smuzhiyun 	GPIO2A0_SEL_UART0_RX		= 1,
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun 	/* GPIO3B_IOMUX */
220*4882a593Smuzhiyun 	GPIO3B5_SEL_SHIFT		= 12,
221*4882a593Smuzhiyun 	GPIO3B5_SEL_MASK		= 0xf << GPIO3B5_SEL_SHIFT,
222*4882a593Smuzhiyun 	GPIO3B5_SEL_UART3_TX		= 4,
223*4882a593Smuzhiyun 	GPIO3B4_SEL_SHIFT		= 8,
224*4882a593Smuzhiyun 	GPIO3B4_SEL_MASK		= 0xf << GPIO3B4_SEL_SHIFT,
225*4882a593Smuzhiyun 	GPIO3B4_SEL_UART3_RX		= 4,
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun 	/* GPIO4B_IOMUX */
228*4882a593Smuzhiyun 	GPIO4B1_SEL_SHIFT		= 2,
229*4882a593Smuzhiyun 	GPIO4B1_SEL_MASK		= 0x3 << GPIO4B1_SEL_SHIFT,
230*4882a593Smuzhiyun 	GPIO4B1_SEL_UART4_TX		= 1,
231*4882a593Smuzhiyun 	GPIO4B0_SEL_SHIFT		= 0,
232*4882a593Smuzhiyun 	GPIO4B0_SEL_MASK		= 0x3 << GPIO4B0_SEL_SHIFT,
233*4882a593Smuzhiyun 	GPIO4B0_SEL_UART4_RX		= 1,
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun 	/* GPIO4D_IOMUX */
236*4882a593Smuzhiyun 	GPIO4D3_SEL_SHIFT		= 6,
237*4882a593Smuzhiyun 	GPIO4D3_SEL_MASK		= 0x3 << GPIO4D3_SEL_SHIFT,
238*4882a593Smuzhiyun 	GPIO4D3_SEL_UART2_TXM1		= 2,
239*4882a593Smuzhiyun 	GPIO4D2_SEL_SHIFT		= 4,
240*4882a593Smuzhiyun 	GPIO4D2_SEL_MASK		= 0x3 << GPIO4D2_SEL_SHIFT,
241*4882a593Smuzhiyun 	GPIO4D2_SEL_UART2_RXM1		= 2,
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun 	/* PVTM_CON0 */
244*4882a593Smuzhiyun 	PVTM_PMU_OSC_EN_SHIFT		= 1,
245*4882a593Smuzhiyun 	PVTM_PMU_OSC_EN_MASK		= 0x1 << PVTM_PMU_OSC_EN_SHIFT,
246*4882a593Smuzhiyun 	PVTM_PMU_OSC_EN			= 1,
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun 	PVTM_PMU_START_SHIFT		= 0,
249*4882a593Smuzhiyun 	PVTM_PMU_START_MASK		= 0x1 << PVTM_PMU_START_SHIFT,
250*4882a593Smuzhiyun 	PVTM_PMU_START			= 1,
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun 	/* PVTM_CON1 */
253*4882a593Smuzhiyun 	PVTM_PMU_CAL_CNT		= 0x1234,
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun 	/* PVTM_STATUS0 */
256*4882a593Smuzhiyun 	PVTM_PMU_FREQ_DONE_SHIFT	= 0,
257*4882a593Smuzhiyun 	PVTM_PMU_FREQ_DONE_MASK		= 0x1 << PVTM_PMU_FREQ_DONE_SHIFT,
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun 	/* UPCTL_CON0 */
260*4882a593Smuzhiyun 	CYSYREQ_UPCTL_DDRSTDBY_SHIFT	= 5,
261*4882a593Smuzhiyun 	CYSYREQ_UPCTL_DDRSTDBY_MASK	= 1 << CYSYREQ_UPCTL_DDRSTDBY_SHIFT,
262*4882a593Smuzhiyun 	CYSYREQ_UPCTL_DDRSTDBY_EN	= 1,
263*4882a593Smuzhiyun 	GRF_DDR_16BIT_EN_SHIFT		= 0,
264*4882a593Smuzhiyun 	GRF_DDR_16BIT_EN_MASK		= 1 << GRF_DDR_16BIT_EN_SHIFT,
265*4882a593Smuzhiyun 	GRF_DDR_16BIT_EN		= 1,
266*4882a593Smuzhiyun 
267*4882a593Smuzhiyun 	/* UPCTL_STATUS0 */
268*4882a593Smuzhiyun 	DFI_SCRAMBLE_KEY_READY_SHIFT	= 21,
269*4882a593Smuzhiyun 	DFI_SCRAMBLE_KEY_READY_MASK	= 0x1 << DFI_SCRAMBLE_KEY_READY_SHIFT,
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun 	/* SOC_CON5 */
272*4882a593Smuzhiyun 	UART2_MULTI_IOFUNC_SEL_SHIFT	= 2,
273*4882a593Smuzhiyun 	UART2_MULTI_IOFUNC_SEL_MASK	= 0x3 << UART2_MULTI_IOFUNC_SEL_SHIFT,
274*4882a593Smuzhiyun 	UART2_MULTI_IOFUNC_SEL_M1	= 1,
275*4882a593Smuzhiyun 
276*4882a593Smuzhiyun 	/* SOC_CON12 */
277*4882a593Smuzhiyun 	NOC_MSCH_MAIN_PARTIAL_SHIFT	= 1,
278*4882a593Smuzhiyun 	NOC_MSCH_MAIN_PARTIAL_MASK	= 0x1 << NOC_MSCH_MAIN_PARTIAL_SHIFT,
279*4882a593Smuzhiyun 	NOC_MSCH_MAIN_PARTIAL_EN	= 1,
280*4882a593Smuzhiyun 	NOC_MSCH_MAINDDR3_SHIFT		= 0,
281*4882a593Smuzhiyun 	NOC_MSCH_MAINDDR3_MASK		= 0x1 << NOC_MSCH_MAINDDR3_SHIFT,
282*4882a593Smuzhiyun 	NOC_MSCH_MAINDDR3_EN		= 1,
283*4882a593Smuzhiyun 	NOC_MSCH_MAINDDR3_DIS		= 0,
284*4882a593Smuzhiyun };
285*4882a593Smuzhiyun 
286*4882a593Smuzhiyun enum { /* SGRF_CON0 */
287*4882a593Smuzhiyun 	DDR_DFI_SCRAMBLE_EN_SHIFT	= 13,
288*4882a593Smuzhiyun 	DDR_DFI_SCRAMBLE_EN_MASK	= 0x1 << DDR_DFI_SCRAMBLE_EN_SHIFT,
289*4882a593Smuzhiyun 	DDR_DFI_SCRAMBLE_EN		= 1,
290*4882a593Smuzhiyun };
291*4882a593Smuzhiyun #endif
292