xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/cru_px30.h (revision 89cc3f4d8da6e9b8a58c3e8770d9ce8e3e109063)
1a60961a3SKever Yang /*
2a60961a3SKever Yang  * (C) Copyright 2017 Rockchip Electronics Co., Ltd.
3a60961a3SKever Yang  *
4a60961a3SKever Yang  * SPDX-License-Identifier:     GPL-2.0+
5a60961a3SKever Yang  */
6a60961a3SKever Yang #ifndef _ASM_ARCH_CRU_px30_H
7a60961a3SKever Yang #define _ASM_ARCH_CRU_px30_H
8a60961a3SKever Yang 
9a60961a3SKever Yang #include <common.h>
10a60961a3SKever Yang 
11a60961a3SKever Yang #define MHz		1000000
1230f1f38dSFinley Xiao #define KHz		1000
13a60961a3SKever Yang #define OSC_HZ		(24 * MHz)
14a60961a3SKever Yang 
15dd472d4fSFinley Xiao #define APLL_HZ		(600 * MHz)
16fe784db3SFinley Xiao #define GPLL_HZ		(1200 * MHz)
1745484bdcSFinley Xiao #define NPLL_HZ		(1188 * MHz)
18fe784db3SFinley Xiao #define ACLK_BUS_HZ	(200 * MHz)
19fe784db3SFinley Xiao #define HCLK_BUS_HZ	(150 * MHz)
20fe784db3SFinley Xiao #define PCLK_BUS_HZ	(100 * MHz)
21fe784db3SFinley Xiao #define ACLK_PERI_HZ	(200 * MHz)
22fe784db3SFinley Xiao #define HCLK_PERI_HZ	(150 * MHz)
23fe784db3SFinley Xiao #define PCLK_PMU_HZ	(100 * MHz)
24a60961a3SKever Yang 
25db235eb5SFinley Xiao /* PX30 pll id */
26db235eb5SFinley Xiao enum px30_pll_id {
27db235eb5SFinley Xiao 	APLL,
28db235eb5SFinley Xiao 	DPLL,
29db235eb5SFinley Xiao 	CPLL,
30db235eb5SFinley Xiao 	NPLL,
31db235eb5SFinley Xiao 	GPLL,
32db235eb5SFinley Xiao 	PLL_COUNT,
33db235eb5SFinley Xiao };
34db235eb5SFinley Xiao 
357a1915c0SFinley Xiao struct px30_clk_info {
367a1915c0SFinley Xiao 	unsigned long id;
377a1915c0SFinley Xiao 	char *name;
387a1915c0SFinley Xiao 	bool is_cru;
397a1915c0SFinley Xiao };
407a1915c0SFinley Xiao 
41cefa5186SFinley Xiao /* Private data for the clock driver - used by rockchip_get_cru() */
42cefa5186SFinley Xiao struct px30_clk_priv {
43cefa5186SFinley Xiao 	struct px30_cru *cru;
44cefa5186SFinley Xiao 	ulong gpll_hz;
4537428b92SFinley Xiao 	ulong armclk_hz;
46dfce0096SElaine Zhang 	ulong armclk_enter_hz;
47dfce0096SElaine Zhang 	ulong armclk_init_hz;
48dfce0096SElaine Zhang 	bool sync_kernel;
49dfce0096SElaine Zhang 	bool set_armclk_rate;
50cefa5186SFinley Xiao };
51cefa5186SFinley Xiao 
52cefa5186SFinley Xiao struct px30_pmuclk_priv {
53cefa5186SFinley Xiao 	struct px30_pmucru *pmucru;
54cefa5186SFinley Xiao 	ulong gpll_hz;
55cefa5186SFinley Xiao };
56cefa5186SFinley Xiao 
57a60961a3SKever Yang struct px30_pll {
58a60961a3SKever Yang 	unsigned int con0;
59a60961a3SKever Yang 	unsigned int con1;
60a60961a3SKever Yang 	unsigned int con2;
61a60961a3SKever Yang 	unsigned int con3;
62a60961a3SKever Yang 	unsigned int con4;
63a60961a3SKever Yang 	unsigned int reserved0[3];
64cefa5186SFinley Xiao };
65cefa5186SFinley Xiao 
66cefa5186SFinley Xiao struct px30_cru {
67cefa5186SFinley Xiao 	struct px30_pll pll[4];
68a60961a3SKever Yang 	unsigned int reserved1[8];
69a60961a3SKever Yang 	unsigned int mode;
70a60961a3SKever Yang 	unsigned int misc;
71a60961a3SKever Yang 	unsigned int reserved2[2];
72a60961a3SKever Yang 	unsigned int glb_cnt_th;
73a60961a3SKever Yang 	unsigned int glb_rst_st;
74a60961a3SKever Yang 	unsigned int glb_srst_fst;
75a60961a3SKever Yang 	unsigned int glb_srst_snd;
76a60961a3SKever Yang 	unsigned int glb_rst_con;
77a60961a3SKever Yang 	unsigned int reserved3[7];
78a60961a3SKever Yang 	unsigned int hwffc_con0;
79a60961a3SKever Yang 	unsigned int reserved4;
80a60961a3SKever Yang 	unsigned int hwffc_th;
81a60961a3SKever Yang 	unsigned int hwffc_intst;
82a60961a3SKever Yang 	unsigned int apll_con0_s;
83a60961a3SKever Yang 	unsigned int apll_con1_s;
84a60961a3SKever Yang 	unsigned int clksel_con0_s;
85a60961a3SKever Yang 	unsigned int reserved5;
86a60961a3SKever Yang 	unsigned int clksel_con[60];
87a60961a3SKever Yang 	unsigned int reserved6[4];
88a60961a3SKever Yang 	unsigned int clkgate_con[18];
89a60961a3SKever Yang 	unsigned int reserved7[(0x280 - 0x244) / 4 - 1];
90a60961a3SKever Yang 	unsigned int ssgtbl[32];
91a60961a3SKever Yang 	unsigned int softrst_con[12];
92a60961a3SKever Yang 	unsigned int reserved8[(0x380 - 0x32c) / 4 - 1];
93a60961a3SKever Yang 	unsigned int sdmmc_con[2];
94a60961a3SKever Yang 	unsigned int sdio_con[2];
95a60961a3SKever Yang 	unsigned int emmc_con[2];
96a60961a3SKever Yang 	unsigned int reserved9[(0x400 - 0x394) / 4 - 1];
97a60961a3SKever Yang 	unsigned int autocs_con[8];
98cefa5186SFinley Xiao };
99cefa5186SFinley Xiao 
100cefa5186SFinley Xiao check_member(px30_cru, autocs_con[7], 0x41c);
101cefa5186SFinley Xiao 
102cefa5186SFinley Xiao struct px30_pmucru {
103cefa5186SFinley Xiao 	struct px30_pll pll;
104a60961a3SKever Yang 	unsigned int pmu_mode;
105cefa5186SFinley Xiao 	unsigned int reserved1[7];
106a60961a3SKever Yang 	unsigned int pmu_clksel_con[6];
107cefa5186SFinley Xiao 	unsigned int reserved2[10];
108a60961a3SKever Yang 	unsigned int pmu_clkgate_con[2];
109cefa5186SFinley Xiao 	unsigned int reserved3[14];
110a60961a3SKever Yang 	unsigned int pmu_autocs_con[2];
111a60961a3SKever Yang };
112a60961a3SKever Yang 
113cefa5186SFinley Xiao check_member(px30_pmucru, pmu_autocs_con[1], 0xc4);
114cefa5186SFinley Xiao 
115cefa5186SFinley Xiao struct pll_rate_table {
116cefa5186SFinley Xiao 	unsigned long rate;
117cefa5186SFinley Xiao 	unsigned int fbdiv;
118cefa5186SFinley Xiao 	unsigned int postdiv1;
119cefa5186SFinley Xiao 	unsigned int refdiv;
120cefa5186SFinley Xiao 	unsigned int postdiv2;
121cefa5186SFinley Xiao 	unsigned int dsmpd;
122cefa5186SFinley Xiao 	unsigned int frac;
123a60961a3SKever Yang };
124a60961a3SKever Yang 
12537428b92SFinley Xiao struct cpu_rate_table {
12637428b92SFinley Xiao 	unsigned long rate;
12737428b92SFinley Xiao 	unsigned int aclk_div;
12837428b92SFinley Xiao 	unsigned int pclk_div;
12937428b92SFinley Xiao };
13037428b92SFinley Xiao 
131a60961a3SKever Yang enum {
132a60961a3SKever Yang 	/* PLLCON0*/
133a60961a3SKever Yang 	PLL_BP_SHIFT		= 15,
134a60961a3SKever Yang 	PLL_POSTDIV1_SHIFT	= 12,
135a60961a3SKever Yang 	PLL_POSTDIV1_MASK	= 7 << PLL_POSTDIV1_SHIFT,
136a60961a3SKever Yang 	PLL_FBDIV_SHIFT		= 0,
137a60961a3SKever Yang 	PLL_FBDIV_MASK		= 0xfff,
138a60961a3SKever Yang 
139a60961a3SKever Yang 	/* PLLCON1 */
140a60961a3SKever Yang 	PLL_PDSEL_SHIFT		= 15,
141a60961a3SKever Yang 	PLL_PD1_SHIFT		= 14,
142a60961a3SKever Yang 	PLL_PD_SHIFT		= 13,
143a60961a3SKever Yang 	PLL_PD_MASK		= 1 << PLL_PD_SHIFT,
144a60961a3SKever Yang 	PLL_DSMPD_SHIFT		= 12,
145a60961a3SKever Yang 	PLL_DSMPD_MASK		= 1 << PLL_DSMPD_SHIFT,
146a60961a3SKever Yang 	PLL_LOCK_STATUS_SHIFT	= 10,
147a60961a3SKever Yang 	PLL_LOCK_STATUS_MASK	= 1 << PLL_LOCK_STATUS_SHIFT,
148a60961a3SKever Yang 	PLL_POSTDIV2_SHIFT	= 6,
149a60961a3SKever Yang 	PLL_POSTDIV2_MASK	= 7 << PLL_POSTDIV2_SHIFT,
150a60961a3SKever Yang 	PLL_REFDIV_SHIFT	= 0,
151a60961a3SKever Yang 	PLL_REFDIV_MASK		= 0x3f,
152a60961a3SKever Yang 
153a60961a3SKever Yang 	/* PLLCON2 */
154a60961a3SKever Yang 	PLL_FOUT4PHASEPD_SHIFT	= 27,
155a60961a3SKever Yang 	PLL_FOUTVCOPD_SHIFT	= 26,
156a60961a3SKever Yang 	PLL_FOUTPOSTDIVPD_SHIFT	= 25,
157a60961a3SKever Yang 	PLL_DACPD_SHIFT		= 24,
158a60961a3SKever Yang 	PLL_FRAC_DIV	= 0xffffff,
159a60961a3SKever Yang 
160a60961a3SKever Yang 	/* CRU_MODE */
161a60961a3SKever Yang 	PLLMUX_FROM_XIN24M	= 0,
162a60961a3SKever Yang 	PLLMUX_FROM_PLL,
163a60961a3SKever Yang 	PLLMUX_FROM_RTC32K,
164a60961a3SKever Yang 	USBPHY480M_MODE_SHIFT	= 8,
165a60961a3SKever Yang 	USBPHY480M_MODE_MASK	= 3 << USBPHY480M_MODE_SHIFT,
166a60961a3SKever Yang 	NPLL_MODE_SHIFT		= 6,
167a60961a3SKever Yang 	NPLL_MODE_MASK		= 3 << NPLL_MODE_SHIFT,
168a60961a3SKever Yang 	DPLL_MODE_SHIFT		= 4,
169a60961a3SKever Yang 	DPLL_MODE_MASK		= 3 << DPLL_MODE_SHIFT,
170a60961a3SKever Yang 	CPLL_MODE_SHIFT		= 2,
171a60961a3SKever Yang 	CPLL_MODE_MASK		= 3 << CPLL_MODE_SHIFT,
172a60961a3SKever Yang 	APLL_MODE_SHIFT		= 0,
173a60961a3SKever Yang 	APLL_MODE_MASK		= 3 << APLL_MODE_SHIFT,
174a60961a3SKever Yang 
175a60961a3SKever Yang 	/* CRU_CLK_SEL0_CON */
176a60961a3SKever Yang 	CORE_ACLK_DIV_SHIFT	= 12,
177a60961a3SKever Yang 	CORE_ACLK_DIV_MASK	= 0x07 << CORE_ACLK_DIV_SHIFT,
178a60961a3SKever Yang 	CORE_DBG_DIV_SHIFT	= 8,
179a60961a3SKever Yang 	CORE_DBG_DIV_MASK	= 0x03 << CORE_DBG_DIV_SHIFT,
180a60961a3SKever Yang 	CORE_CLK_PLL_SEL_SHIFT	= 7,
181a60961a3SKever Yang 	CORE_CLK_PLL_SEL_MASK	= 1 << CORE_CLK_PLL_SEL_SHIFT,
182a60961a3SKever Yang 	CORE_CLK_PLL_SEL_APLL	= 0,
183a60961a3SKever Yang 	CORE_CLK_PLL_SEL_GPLL,
184a60961a3SKever Yang 	CORE_DIV_CON_SHIFT	= 0,
185a60961a3SKever Yang 	CORE_DIV_CON_MASK	= 0x0f << CORE_DIV_CON_SHIFT,
186a60961a3SKever Yang 
18730f1f38dSFinley Xiao 	/* CRU_CLK_SEL3_CON */
18830f1f38dSFinley Xiao 	ACLK_VO_PLL_SHIFT	= 6,
18930f1f38dSFinley Xiao 	ACLK_VO_PLL_MASK	= 0x3 << ACLK_VO_PLL_SHIFT,
19030f1f38dSFinley Xiao 	ACLK_VO_SEL_GPLL	= 0,
19130f1f38dSFinley Xiao 	ACLK_VO_SEL_CPLL,
19230f1f38dSFinley Xiao 	ACLK_VO_SEL_NPLL,
19330f1f38dSFinley Xiao 	ACLK_VO_DIV_SHIFT	= 0,
19430f1f38dSFinley Xiao 	ACLK_VO_DIV_MASK	= 0x1f << ACLK_VO_DIV_SHIFT,
19530f1f38dSFinley Xiao 
19630f1f38dSFinley Xiao 	/* CRU_CLK_SEL5_CON */
19730f1f38dSFinley Xiao 	DCLK_VOPB_SEL_SHIFT	= 14,
19830f1f38dSFinley Xiao 	DCLK_VOPB_SEL_MASK	= 0x3 << DCLK_VOPB_SEL_SHIFT,
19930f1f38dSFinley Xiao 	DCLK_VOPB_SEL_DIVOUT	= 0,
20030f1f38dSFinley Xiao 	DCLK_VOPB_SEL_FRACOUT,
20130f1f38dSFinley Xiao 	DCLK_VOPB_SEL_24M,
20230f1f38dSFinley Xiao 	DCLK_VOPB_PLL_SEL_SHIFT	= 11,
20330f1f38dSFinley Xiao 	DCLK_VOPB_PLL_SEL_MASK	= 0x1 << DCLK_VOPB_PLL_SEL_SHIFT,
20430f1f38dSFinley Xiao 	DCLK_VOPB_PLL_SEL_CPLL	= 0,
20530f1f38dSFinley Xiao 	DCLK_VOPB_PLL_SEL_NPLL,
20630f1f38dSFinley Xiao 	DCLK_VOPB_DIV_SHIFT	= 0,
20730f1f38dSFinley Xiao 	DCLK_VOPB_DIV_MASK	= 0xff,
20830f1f38dSFinley Xiao 
209d101530aSFinley Xiao 	/* CRU_CLK_SEL8_CON */
210d101530aSFinley Xiao 	DCLK_VOPL_SEL_SHIFT	= 14,
211d101530aSFinley Xiao 	DCLK_VOPL_SEL_MASK	= 0x3 << DCLK_VOPL_SEL_SHIFT,
212d101530aSFinley Xiao 	DCLK_VOPL_SEL_DIVOUT	= 0,
213d101530aSFinley Xiao 	DCLK_VOPL_SEL_FRACOUT,
214d101530aSFinley Xiao 	DCLK_VOPL_SEL_24M,
215d101530aSFinley Xiao 	DCLK_VOPL_PLL_SEL_SHIFT	= 11,
216d101530aSFinley Xiao 	DCLK_VOPL_PLL_SEL_MASK	= 0x1 << DCLK_VOPL_PLL_SEL_SHIFT,
217c996ae8aSFinley Xiao 	DCLK_VOPL_PLL_SEL_NPLL	= 0,
218c996ae8aSFinley Xiao 	DCLK_VOPL_PLL_SEL_CPLL,
219d101530aSFinley Xiao 	DCLK_VOPL_DIV_SHIFT	= 0,
220d101530aSFinley Xiao 	DCLK_VOPL_DIV_MASK	= 0xff,
221d101530aSFinley Xiao 
222a60961a3SKever Yang 	/* CRU_CLK_SEL14_CON */
223a60961a3SKever Yang 	PERI_PLL_SEL_SHIFT	=15,
224a60961a3SKever Yang 	PERI_PLL_SEL_MASK	= 3 << PERI_PLL_SEL_SHIFT,
225a60961a3SKever Yang 	PERI_PLL_GPLL		= 0,
226a60961a3SKever Yang 	PERI_PLL_CPLL,
227a60961a3SKever Yang 	PERI_HCLK_DIV_SHIFT	= 8,
228a60961a3SKever Yang 	PERI_HCLK_DIV_MASK	= 0x1f << PERI_HCLK_DIV_SHIFT,
229a60961a3SKever Yang 	PERI_ACLK_DIV_SHIFT	= 0,
230a60961a3SKever Yang 	PERI_ACLK_DIV_MASK	= 0x1f << PERI_ACLK_DIV_SHIFT,
231a60961a3SKever Yang 
232cefa5186SFinley Xiao 	/* CRU_CLKSEL15_CON */
233cefa5186SFinley Xiao 	NANDC_CLK_SEL_SHIFT	= 15,
234cefa5186SFinley Xiao 	NANDC_CLK_SEL_MASK	= 0x1 << NANDC_CLK_SEL_SHIFT,
235cefa5186SFinley Xiao 	NANDC_CLK_SEL_NANDC	= 0,
236cefa5186SFinley Xiao 	NANDC_CLK_SEL_NANDC_DIV50,
237cefa5186SFinley Xiao 	NANDC_DIV50_SHIFT	= 8,
238cefa5186SFinley Xiao 	NANDC_DIV50_MASK	= 0x1f << NANDC_DIV50_SHIFT,
239cefa5186SFinley Xiao 	NANDC_PLL_SHIFT		= 6,
240cefa5186SFinley Xiao 	NANDC_PLL_MASK		= 0x3 << NANDC_PLL_SHIFT,
241cefa5186SFinley Xiao 	NANDC_SEL_GPLL		= 0,
242cefa5186SFinley Xiao 	NANDC_SEL_CPLL,
243cefa5186SFinley Xiao 	NANDC_SEL_NPLL,
244cefa5186SFinley Xiao 	NANDC_DIV_SHIFT		= 0,
245cefa5186SFinley Xiao 	NANDC_DIV_MASK		= 0x1f << NANDC_DIV_SHIFT,
246cefa5186SFinley Xiao 
247a60961a3SKever Yang 	/* CRU_CLKSEL20_CON */
248a60961a3SKever Yang 	EMMC_PLL_SHIFT		= 14,
249a60961a3SKever Yang 	EMMC_PLL_MASK		= 3 << EMMC_PLL_SHIFT,
250a60961a3SKever Yang 	EMMC_SEL_GPLL		= 0,
251a60961a3SKever Yang 	EMMC_SEL_CPLL,
252a60961a3SKever Yang 	EMMC_SEL_NPLL,
253a60961a3SKever Yang 	EMMC_SEL_24M,
254a60961a3SKever Yang 	EMMC_DIV_SHIFT		= 0,
255a60961a3SKever Yang 	EMMC_DIV_MASK		= 0xff << EMMC_DIV_SHIFT,
256a60961a3SKever Yang 
257a60961a3SKever Yang 	/* CRU_CLKSEL21_CON */
258a60961a3SKever Yang 	EMMC_CLK_SEL_SHIFT	= 15,
259a60961a3SKever Yang 	EMMC_CLK_SEL_MASK	= 1 << EMMC_CLK_SEL_SHIFT,
260a60961a3SKever Yang 	EMMC_CLK_SEL_EMMC	= 0,
261a60961a3SKever Yang 	EMMC_CLK_SEL_EMMC_DIV50,
262a60961a3SKever Yang 	EMMC_DIV50_SHIFT	= 0,
263a60961a3SKever Yang 	EMMC_DIV50_MASK		= 0xff << EMMC_DIV_SHIFT,
264a60961a3SKever Yang 
265a60961a3SKever Yang 	/* CRU_CLKSEL22_CON */
266a60961a3SKever Yang 	GMAC_PLL_SEL_SHIFT	= 14,
267a60961a3SKever Yang 	GMAC_PLL_SEL_MASK	= 3 << GMAC_PLL_SEL_SHIFT,
268a60961a3SKever Yang 	GMAC_PLL_SEL_GPLL	= 0,
269a60961a3SKever Yang 	GMAC_PLL_SEL_CPLL,
270a60961a3SKever Yang 	GMAC_PLL_SEL_NPLL,
271a60961a3SKever Yang 	CLK_GMAC_DIV_SHIFT	= 8,
272a60961a3SKever Yang 	CLK_GMAC_DIV_MASK	= 0x1f << CLK_GMAC_DIV_SHIFT,
273a60961a3SKever Yang 	SFC_PLL_SEL_SHIFT	= 7,
274a60961a3SKever Yang 	SFC_PLL_SEL_MASK	= 1 << SFC_PLL_SEL_SHIFT,
275a60961a3SKever Yang 	SFC_DIV_CON_SHIFT	= 0,
276a60961a3SKever Yang 	SFC_DIV_CON_MASK	= 0x7f,
277a60961a3SKever Yang 
278a60961a3SKever Yang 	/* CRU_CLK_SEL23_CON */
279a60961a3SKever Yang 	BUS_PLL_SEL_SHIFT	=15,
2800dc8896cSKever Yang 	BUS_PLL_SEL_MASK	= 1 << BUS_PLL_SEL_SHIFT,
281a60961a3SKever Yang 	BUS_PLL_SEL_GPLL	= 0,
282a60961a3SKever Yang 	BUS_PLL_SEL_CPLL,
283a60961a3SKever Yang 	BUS_ACLK_DIV_SHIFT	= 8,
284a60961a3SKever Yang 	BUS_ACLK_DIV_MASK	= 0x1f << BUS_ACLK_DIV_SHIFT,
285a60961a3SKever Yang 	RMII_CLK_SEL_SHIFT	= 7,
286a60961a3SKever Yang 	RMII_CLK_SEL_MASK	= 1 << RMII_CLK_SEL_SHIFT,
287a60961a3SKever Yang 	RMII_CLK_SEL_10M	= 0,
288a60961a3SKever Yang 	RMII_CLK_SEL_100M,
289a60961a3SKever Yang 	RMII_EXTCLK_SEL_SHIFT	= 6,
290a60961a3SKever Yang 	RMII_EXTCLK_SEL_MASK	= 1 << RMII_EXTCLK_SEL_SHIFT,
291a60961a3SKever Yang 	RMII_EXTCLK_SEL_INT	= 0,
292a60961a3SKever Yang 	RMII_EXTCLK_SEL_EXT,
293a60961a3SKever Yang 	PCLK_GMAC_DIV_SHIFT	= 0,
294a60961a3SKever Yang 	PCLK_GMAC_DIV_MASK	= 0x0f << PCLK_GMAC_DIV_SHIFT,
295a60961a3SKever Yang 
296a60961a3SKever Yang 	/* CRU_CLK_SEL24_CON */
297a60961a3SKever Yang 	BUS_PCLK_DIV_SHIFT	= 8,
298a60961a3SKever Yang 	BUS_PCLK_DIV_MASK	= 3 << BUS_PCLK_DIV_SHIFT,
299a60961a3SKever Yang 	BUS_HCLK_DIV_SHIFT	= 0,
300a60961a3SKever Yang 	BUS_HCLK_DIV_MASK	= 0x1f << BUS_HCLK_DIV_SHIFT,
301a60961a3SKever Yang 
30251d1c6b1SElaine Zhang 	/* CRU_CLK_SEL25_CON */
30351d1c6b1SElaine Zhang 	CRYPTO_APK_SEL_SHIFT	= 14,
30451d1c6b1SElaine Zhang 	CRYPTO_APK_PLL_SEL_MASK	= 3 << CRYPTO_APK_SEL_SHIFT,
30551d1c6b1SElaine Zhang 	CRYPTO_PLL_SEL_GPLL	= 0,
30651d1c6b1SElaine Zhang 	CRYPTO_PLL_SEL_CPLL,
30751d1c6b1SElaine Zhang 	CRYPTO_PLL_SEL_NPLL	= 0,
30851d1c6b1SElaine Zhang 	CRYPTO_APK_DIV_SHIFT	= 8,
30951d1c6b1SElaine Zhang 	CRYPTO_APK_DIV_MASK	= 0x1f << CRYPTO_APK_DIV_SHIFT,
31051d1c6b1SElaine Zhang 	CRYPTO_PLL_SEL_SHIFT	= 6,
31151d1c6b1SElaine Zhang 	CRYPTO_PLL_SEL_MASK	= 3 << CRYPTO_PLL_SEL_SHIFT,
31251d1c6b1SElaine Zhang 	CRYPTO_DIV_SHIFT	= 0,
31351d1c6b1SElaine Zhang 	CRYPTO_DIV_MASK		= 0x1f << CRYPTO_DIV_SHIFT,
31451d1c6b1SElaine Zhang 
31595f26412SSugar Zhang 	/* CRU_CLK_SEL30_CON */
31695f26412SSugar Zhang 	CLK_I2S1_DIV_CON_MASK	= 0x7f,
31795f26412SSugar Zhang 	CLK_I2S1_PLL_SEL_MASK	= 0X1 << 8,
31895f26412SSugar Zhang 	CLK_I2S1_PLL_SEL_GPLL	= 0X0 << 8,
31995f26412SSugar Zhang 	CLK_I2S1_PLL_SEL_NPLL	= 0X1 << 8,
32095f26412SSugar Zhang 	CLK_I2S1_SEL_MASK	= 0x3 << 10,
32195f26412SSugar Zhang 	CLK_I2S1_SEL_I2S1	= 0x0 << 10,
32295f26412SSugar Zhang 	CLK_I2S1_SEL_FRAC	= 0x1 << 10,
32395f26412SSugar Zhang 	CLK_I2S1_SEL_MCLK_IN	= 0x2 << 10,
32495f26412SSugar Zhang 	CLK_I2S1_SEL_OSC	= 0x3 << 10,
32595f26412SSugar Zhang 	CLK_I2S1_OUT_SEL_MASK	= 0x1 << 15,
32695f26412SSugar Zhang 	CLK_I2S1_OUT_SEL_I2S1	= 0x0 << 15,
32795f26412SSugar Zhang 	CLK_I2S1_OUT_SEL_OSC	= 0x1 << 15,
32895f26412SSugar Zhang 
32995f26412SSugar Zhang 	/* CRU_CLK_SEL31_CON */
33095f26412SSugar Zhang 	CLK_I2S1_FRAC_NUMERATOR_SHIFT	= 16,
33195f26412SSugar Zhang 	CLK_I2S1_FRAC_NUMERATOR_MASK	= 0xffff << 16,
33295f26412SSugar Zhang 	CLK_I2S1_FRAC_DENOMINATOR_SHIFT	= 0,
33395f26412SSugar Zhang 	CLK_I2S1_FRAC_DENOMINATOR_MASK	= 0xffff,
33495f26412SSugar Zhang 
335e82920f3SKever Yang 	/* CRU_CLK_SEL34_CON */
336e82920f3SKever Yang 	UART1_PLL_SEL_SHIFT	= 14,
337e82920f3SKever Yang 	UART1_PLL_SEL_MASK	= 3 << UART1_PLL_SEL_SHIFT,
338e82920f3SKever Yang 	UART1_PLL_SEL_GPLL	= 0,
339e82920f3SKever Yang 	UART1_PLL_SEL_24M,
340e82920f3SKever Yang 	UART1_PLL_SEL_480M,
341e82920f3SKever Yang 	UART1_PLL_SEL_NPLL,
342e82920f3SKever Yang 	UART1_DIV_CON_SHIFT	= 0,
343e82920f3SKever Yang 	UART1_DIV_CON_MASK	= 0x1f << UART1_DIV_CON_SHIFT,
344e82920f3SKever Yang 
345e82920f3SKever Yang 	/* CRU_CLK_SEL35_CON */
346e82920f3SKever Yang 	UART1_CLK_SEL_SHIFT	= 14,
347e82920f3SKever Yang 	UART1_CLK_SEL_MASK	= 3 << UART1_PLL_SEL_SHIFT,
348e82920f3SKever Yang 	UART1_CLK_SEL_UART1	= 0,
349e82920f3SKever Yang 	UART1_CLK_SEL_UART1_NP5,
350e82920f3SKever Yang 	UART1_CLK_SEL_UART1_FRAC,
351e82920f3SKever Yang 	UART1_DIVNP5_SHIFT	= 0,
352e82920f3SKever Yang 	UART1_DIVNP5_MASK	= 0x1f << UART1_DIVNP5_SHIFT,
353e82920f3SKever Yang 
354e82920f3SKever Yang 	/* CRU_CLK_SEL37_CON */
355e82920f3SKever Yang 	UART2_PLL_SEL_SHIFT	= 14,
356e82920f3SKever Yang 	UART2_PLL_SEL_MASK	= 3 << UART2_PLL_SEL_SHIFT,
357e82920f3SKever Yang 	UART2_PLL_SEL_GPLL	= 0,
358e82920f3SKever Yang 	UART2_PLL_SEL_24M,
359e82920f3SKever Yang 	UART2_PLL_SEL_480M,
360e82920f3SKever Yang 	UART2_PLL_SEL_NPLL,
361e82920f3SKever Yang 	UART2_DIV_CON_SHIFT	= 0,
362e82920f3SKever Yang 	UART2_DIV_CON_MASK	= 0x1f << UART2_DIV_CON_SHIFT,
363e82920f3SKever Yang 
364e82920f3SKever Yang 	/* CRU_CLK_SEL38_CON */
365e82920f3SKever Yang 	UART2_CLK_SEL_SHIFT	= 14,
366e82920f3SKever Yang 	UART2_CLK_SEL_MASK	= 3 << UART2_PLL_SEL_SHIFT,
367e82920f3SKever Yang 	UART2_CLK_SEL_UART2	= 0,
368e82920f3SKever Yang 	UART2_CLK_SEL_UART2_NP5,
369e82920f3SKever Yang 	UART2_CLK_SEL_UART2_FRAC,
370e82920f3SKever Yang 	UART2_DIVNP5_SHIFT	= 0,
371e82920f3SKever Yang 	UART2_DIVNP5_MASK	= 0x1f << UART2_DIVNP5_SHIFT,
372e82920f3SKever Yang 
373e82920f3SKever Yang 	/* CRU_CLK_SEL46_CON */
374e82920f3SKever Yang 	UART5_PLL_SEL_SHIFT	= 14,
375e82920f3SKever Yang 	UART5_PLL_SEL_MASK	= 3 << UART5_PLL_SEL_SHIFT,
376e82920f3SKever Yang 	UART5_PLL_SEL_GPLL	= 0,
377e82920f3SKever Yang 	UART5_PLL_SEL_24M,
378e82920f3SKever Yang 	UART5_PLL_SEL_480M,
379e82920f3SKever Yang 	UART5_PLL_SEL_NPLL,
380e82920f3SKever Yang 	UART5_DIV_CON_SHIFT	= 0,
381e82920f3SKever Yang 	UART5_DIV_CON_MASK	= 0x1f << UART5_DIV_CON_SHIFT,
382e82920f3SKever Yang 
383e82920f3SKever Yang 	/* CRU_CLK_SEL47_CON */
384e82920f3SKever Yang 	UART5_CLK_SEL_SHIFT	= 14,
385e82920f3SKever Yang 	UART5_CLK_SEL_MASK	= 3 << UART5_PLL_SEL_SHIFT,
386e82920f3SKever Yang 	UART5_CLK_SEL_UART5	= 0,
387e82920f3SKever Yang 	UART5_CLK_SEL_UART5_NP5,
388e82920f3SKever Yang 	UART5_CLK_SEL_UART5_FRAC,
389e82920f3SKever Yang 	UART5_DIVNP5_SHIFT	= 0,
390e82920f3SKever Yang 	UART5_DIVNP5_MASK	= 0x1f << UART5_DIVNP5_SHIFT,
391e82920f3SKever Yang 
392f67f522bSFinley Xiao 	/* CRU_CLK_SEL49_CON */
393f67f522bSFinley Xiao 	CLK_I2C_PLL_SEL_GPLL		= 0,
394f67f522bSFinley Xiao 	CLK_I2C_PLL_SEL_24M,
395f67f522bSFinley Xiao 	CLK_I2C_DIV_CON_MASK		= 0x7f,
396f67f522bSFinley Xiao 	CLK_I2C_PLL_SEL_MASK		= 1,
397f67f522bSFinley Xiao 	CLK_I2C1_PLL_SEL_SHIFT		= 15,
398f67f522bSFinley Xiao 	CLK_I2C1_DIV_CON_SHIFT		= 8,
399f67f522bSFinley Xiao 	CLK_I2C0_PLL_SEL_SHIFT		= 7,
400f67f522bSFinley Xiao 	CLK_I2C0_DIV_CON_SHIFT		= 0,
401f67f522bSFinley Xiao 
402f67f522bSFinley Xiao 	/* CRU_CLK_SEL50_CON */
403f67f522bSFinley Xiao 	CLK_I2C3_PLL_SEL_SHIFT		= 15,
404f67f522bSFinley Xiao 	CLK_I2C3_DIV_CON_SHIFT		= 8,
405f67f522bSFinley Xiao 	CLK_I2C2_PLL_SEL_SHIFT		= 7,
406f67f522bSFinley Xiao 	CLK_I2C2_DIV_CON_SHIFT		= 0,
407f67f522bSFinley Xiao 
408f67f522bSFinley Xiao 	/* CRU_CLK_SEL52_CON */
409f67f522bSFinley Xiao 	CLK_PWM_PLL_SEL_GPLL		= 0,
410f67f522bSFinley Xiao 	CLK_PWM_PLL_SEL_24M,
411f67f522bSFinley Xiao 	CLK_PWM_DIV_CON_MASK		= 0x7f,
412f67f522bSFinley Xiao 	CLK_PWM_PLL_SEL_MASK		= 1,
413f67f522bSFinley Xiao 	CLK_PWM1_PLL_SEL_SHIFT		= 15,
414f67f522bSFinley Xiao 	CLK_PWM1_DIV_CON_SHIFT		= 8,
415f67f522bSFinley Xiao 	CLK_PWM0_PLL_SEL_SHIFT		= 7,
416f67f522bSFinley Xiao 	CLK_PWM0_DIV_CON_SHIFT		= 0,
417f67f522bSFinley Xiao 
418f67f522bSFinley Xiao 	/* CRU_CLK_SEL53_CON */
419f67f522bSFinley Xiao 	CLK_SPI_PLL_SEL_GPLL		= 0,
420f67f522bSFinley Xiao 	CLK_SPI_PLL_SEL_24M,
421f67f522bSFinley Xiao 	CLK_SPI_DIV_CON_MASK		= 0x7f,
422f67f522bSFinley Xiao 	CLK_SPI_PLL_SEL_MASK		= 1,
423f67f522bSFinley Xiao 	CLK_SPI1_PLL_SEL_SHIFT		= 15,
424f67f522bSFinley Xiao 	CLK_SPI1_DIV_CON_SHIFT		= 8,
425f67f522bSFinley Xiao 	CLK_SPI0_PLL_SEL_SHIFT		= 7,
426f67f522bSFinley Xiao 	CLK_SPI0_DIV_CON_SHIFT		= 0,
427f67f522bSFinley Xiao 
428f67f522bSFinley Xiao 	/* CRU_CLK_SEL55_CON */
429f67f522bSFinley Xiao 	CLK_SARADC_DIV_CON_SHIFT	= 0,
430f67f522bSFinley Xiao 	CLK_SARADC_DIV_CON_MASK		= 0x7ff,
431f67f522bSFinley Xiao 
432*89cc3f4dSElaine Zhang 	/* CRU_CLK_SEL56_CON */
433*89cc3f4dSElaine Zhang 	CLK_OTP_USR_DIV_CON_SHIFT	= 4,
434*89cc3f4dSElaine Zhang 	CLK_OTP_USR_DIV_CON_MASK	= 0x3 << CLK_OTP_USR_DIV_CON_SHIFT,
435*89cc3f4dSElaine Zhang 	CLK_OTP_DIV_CON_SHIFT		= 0,
436*89cc3f4dSElaine Zhang 	CLK_OTP_DIV_CON_MASK		= 0x7,
437*89cc3f4dSElaine Zhang 	CLK_OTP_S_SEL_SHIFT		= 8,
438*89cc3f4dSElaine Zhang 	CLK_OTP_S_SEL_MASK		= 1 << CLK_OTP_S_SEL_SHIFT,
439*89cc3f4dSElaine Zhang 	CLK_OTP_S_SEL_XIN24M		= 0,
440*89cc3f4dSElaine Zhang 	CLK_OTP_S_SEL_GPLL,
441*89cc3f4dSElaine Zhang 	CLK_OTP_S_DIV_CON_SHIFT		= 0,
442*89cc3f4dSElaine Zhang 	CLK_OTP_S_DIV_CON_MASK		= 0x1FF,
443*89cc3f4dSElaine Zhang 
44495f26412SSugar Zhang 	/* CRU_CLK_GATE10_CON */
44595f26412SSugar Zhang 	CLK_I2S1_OUT_MCLK_PAD_MASK	= 0x1 << 9,
44695f26412SSugar Zhang 	CLK_I2S1_OUT_MCLK_PAD_ENABLE	= 0x1 << 9,
44795f26412SSugar Zhang 	CLK_I2S1_OUT_MCLK_PAD_DISABLE	= 0x0 << 9,
44895f26412SSugar Zhang 
449a60961a3SKever Yang 	/* CRU_PMU_MODE */
450a60961a3SKever Yang 	GPLL_MODE_SHIFT			= 0,
451a60961a3SKever Yang 	GPLL_MODE_MASK			= 3 << GPLL_MODE_SHIFT,
452a60961a3SKever Yang 
453cefa5186SFinley Xiao 	/* CRU_PMU_CLK_SEL0_CON */
454cefa5186SFinley Xiao 	CLK_PMU_PCLK_DIV_SHIFT		= 0,
455cefa5186SFinley Xiao 	CLK_PMU_PCLK_DIV_MASK		= 0x1f << CLK_PMU_PCLK_DIV_SHIFT,
456a60961a3SKever Yang };
457a60961a3SKever Yang #endif
458