xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/cru_rk3562.h (revision 9b43a31a11f5bff94914567d2c1b7ca3e44d8d19)
156f7d184SJoseph Chen /* SPDX-License-Identifier: GPL-2.0 */
256f7d184SJoseph Chen /*
3*9b43a31aSFinley Xiao  * Copyright (c) 2022 Rockchip Electronics Co. Ltd.
4*9b43a31aSFinley Xiao  * Author:
5*9b43a31aSFinley Xiao  * 	Elaine Zhang <zhangqing@rock-chips.com>
6*9b43a31aSFinley Xiao  *	Finley Xiao <finley.xiao@rock-chips.com>
756f7d184SJoseph Chen  */
856f7d184SJoseph Chen 
956f7d184SJoseph Chen #ifndef _ASM_ARCH_CRU_RK3562_H
1056f7d184SJoseph Chen #define _ASM_ARCH_CRU_RK3562_H
1156f7d184SJoseph Chen 
1256f7d184SJoseph Chen #define MHz		1000000
1356f7d184SJoseph Chen #define KHz		1000
1456f7d184SJoseph Chen #define OSC_HZ		(24 * MHz)
1556f7d184SJoseph Chen 
16*9b43a31aSFinley Xiao #define CPU_PVTPLL_HZ	(1008 * MHz)
17*9b43a31aSFinley Xiao #define APLL_HZ		(600 * MHz)
1856f7d184SJoseph Chen #define GPLL_HZ		(1188 * MHz)
1956f7d184SJoseph Chen #define CPLL_HZ		(1000 * MHz)
20*9b43a31aSFinley Xiao #define HPLL_HZ		(1000 * MHz)
2156f7d184SJoseph Chen 
2256f7d184SJoseph Chen /* RK3562 pll id */
2356f7d184SJoseph Chen enum rk3562_pll_id {
2456f7d184SJoseph Chen 	APLL,
2556f7d184SJoseph Chen 	GPLL,
2656f7d184SJoseph Chen 	VPLL,
2756f7d184SJoseph Chen 	HPLL,
28*9b43a31aSFinley Xiao 	CPLL,
29*9b43a31aSFinley Xiao 	DPLL,
3056f7d184SJoseph Chen 	PLL_COUNT,
3156f7d184SJoseph Chen };
3256f7d184SJoseph Chen 
3356f7d184SJoseph Chen struct rk3562_clk_info {
3456f7d184SJoseph Chen 	unsigned long id;
3556f7d184SJoseph Chen 	char *name;
3656f7d184SJoseph Chen };
3756f7d184SJoseph Chen 
3856f7d184SJoseph Chen struct rk3562_clk_priv {
3956f7d184SJoseph Chen 	struct rk3562_cru *cru;
4056f7d184SJoseph Chen 	ulong gpll_hz;
4156f7d184SJoseph Chen 	ulong vpll_hz;
42*9b43a31aSFinley Xiao 	ulong hpll_hz;
43*9b43a31aSFinley Xiao 	ulong cpll_hz;
4456f7d184SJoseph Chen 	ulong armclk_hz;
4556f7d184SJoseph Chen 	ulong armclk_enter_hz;
4656f7d184SJoseph Chen 	ulong armclk_init_hz;
4756f7d184SJoseph Chen 	bool sync_kernel;
4856f7d184SJoseph Chen 	bool set_armclk_rate;
4956f7d184SJoseph Chen };
5056f7d184SJoseph Chen 
5156f7d184SJoseph Chen struct rk3562_cru {
52*9b43a31aSFinley Xiao 	/* top cru */
53*9b43a31aSFinley Xiao 	uint32_t apll_con[5];
54*9b43a31aSFinley Xiao 	uint32_t reserved0014[19];
55*9b43a31aSFinley Xiao 	uint32_t gpll_con[5];
56*9b43a31aSFinley Xiao 	uint32_t reserved0074[3];
57*9b43a31aSFinley Xiao 	uint32_t vpll_con[5];
58*9b43a31aSFinley Xiao 	uint32_t reserved0094[3];
59*9b43a31aSFinley Xiao 	uint32_t hpll_con[5];
60*9b43a31aSFinley Xiao 	uint32_t reserved00b4[19];
61*9b43a31aSFinley Xiao 	uint32_t clksel_con[48];
62*9b43a31aSFinley Xiao 	uint32_t reserved01c0[80];
63*9b43a31aSFinley Xiao 	uint32_t gate_con[28];
64*9b43a31aSFinley Xiao 	uint32_t reserved370[36];
65*9b43a31aSFinley Xiao 	uint32_t softrst_con[28];
66*9b43a31aSFinley Xiao 	uint32_t reserved0470[100];
67*9b43a31aSFinley Xiao 	uint32_t mode_con[1];
68*9b43a31aSFinley Xiao 	uint32_t reserved0604[3];
69*9b43a31aSFinley Xiao 	uint32_t glb_cnt_th;
70*9b43a31aSFinley Xiao 	uint32_t glb_srst_fst;
71*9b43a31aSFinley Xiao 	uint32_t glb_srst_snd;
72*9b43a31aSFinley Xiao 	uint32_t glb_rst_con;
73*9b43a31aSFinley Xiao 	uint32_t glb_rst_st;
74*9b43a31aSFinley Xiao 	unsigned int sdmmc0_con[2];
75*9b43a31aSFinley Xiao 	unsigned int sdmmc1_con[2];
76*9b43a31aSFinley Xiao 	uint32_t reserved0634[2];
77*9b43a31aSFinley Xiao 	unsigned int emmc_con[1];
78*9b43a31aSFinley Xiao 	uint32_t reserved0640[15984];
7956f7d184SJoseph Chen 
80*9b43a31aSFinley Xiao 	/* pmu0 cru */
81*9b43a31aSFinley Xiao 	uint32_t reserved10000[64];
82*9b43a31aSFinley Xiao 	uint32_t pmu0clksel_con[4];
83*9b43a31aSFinley Xiao 	uint32_t reserved10110[28];
84*9b43a31aSFinley Xiao 	uint32_t pmu0gate_con[3];
85*9b43a31aSFinley Xiao 	uint32_t reserved1018c[29];
86*9b43a31aSFinley Xiao 	uint32_t pmu0softrst_con[3];
87*9b43a31aSFinley Xiao 	uint32_t reserved1020c[8061];
88*9b43a31aSFinley Xiao 
89*9b43a31aSFinley Xiao 	/* pmu1 cru */
90*9b43a31aSFinley Xiao 	uint32_t reserved18000[16];
91*9b43a31aSFinley Xiao 	uint32_t cpll_con[5];
92*9b43a31aSFinley Xiao 	uint32_t reserved18054[43];
93*9b43a31aSFinley Xiao 	uint32_t pmu1clksel_con[7];
94*9b43a31aSFinley Xiao 	uint32_t reserved1811c[25];
95*9b43a31aSFinley Xiao 	uint32_t pmu1gate_con[4];
96*9b43a31aSFinley Xiao 	uint32_t reserved18190[28];
97*9b43a31aSFinley Xiao 	uint32_t pmu1softrst_con[3];
98*9b43a31aSFinley Xiao 	uint32_t reserved1820c[93];
99*9b43a31aSFinley Xiao 	uint32_t pmu1mode_con[1];
100*9b43a31aSFinley Xiao 	uint32_t reserved18384[7967];
101*9b43a31aSFinley Xiao 
102*9b43a31aSFinley Xiao 	/* ddr cru */
103*9b43a31aSFinley Xiao 	uint32_t reserved20000[64];
104*9b43a31aSFinley Xiao 	uint32_t ddrclksel_con[2];
105*9b43a31aSFinley Xiao 	uint32_t reserved20108[30];
106*9b43a31aSFinley Xiao 	uint32_t ddrgate_con[2];
107*9b43a31aSFinley Xiao 	uint32_t reserved20188[30];
108*9b43a31aSFinley Xiao 	uint32_t ddrsoftrst_con[2];
109*9b43a31aSFinley Xiao 	uint32_t reserved20208[8062];
110*9b43a31aSFinley Xiao 
111*9b43a31aSFinley Xiao 	/* subddr cru */
112*9b43a31aSFinley Xiao 	uint32_t reserved28000[8];
113*9b43a31aSFinley Xiao 	uint32_t dpll_con[5];
114*9b43a31aSFinley Xiao 	uint32_t reserved28034[51];
115*9b43a31aSFinley Xiao 	uint32_t sudbddrclksel_con[1];
116*9b43a31aSFinley Xiao 	uint32_t reserved28104[31];
117*9b43a31aSFinley Xiao 	uint32_t subddrgate_con[1];
118*9b43a31aSFinley Xiao 	uint32_t reserved28184[31];
119*9b43a31aSFinley Xiao 	uint32_t sudbddrsoftrst_con[1];
120*9b43a31aSFinley Xiao 	uint32_t reserved28204[95];
121*9b43a31aSFinley Xiao 	uint32_t subddrmode_con[1];
122*9b43a31aSFinley Xiao 	uint32_t reserved28384[7967];
123*9b43a31aSFinley Xiao 
124*9b43a31aSFinley Xiao 	/* peri cru */
125*9b43a31aSFinley Xiao 	uint32_t reserved30000[64];
126*9b43a31aSFinley Xiao 	uint32_t periclksel_con[48];
127*9b43a31aSFinley Xiao 	uint32_t reserved301c0[80];
128*9b43a31aSFinley Xiao 	uint32_t perigate_con[18];
129*9b43a31aSFinley Xiao 	uint32_t reserved30348[46];
130*9b43a31aSFinley Xiao 	uint32_t perisoftrst_con[18];
131*9b43a31aSFinley Xiao 	uint32_t reserved30448[143];
132*9b43a31aSFinley Xiao };
133*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved0640[0], 0x00640);
134*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved1020c[0], 0x1020c);
135*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved18384[0], 0x18384);
136*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved20208[0], 0x20208);
137*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved28384[0], 0x28384);
138*9b43a31aSFinley Xiao check_member(rk3562_cru, reserved30448[0], 0x30448);
13956f7d184SJoseph Chen 
14056f7d184SJoseph Chen struct pll_rate_table {
14156f7d184SJoseph Chen 	unsigned long rate;
14256f7d184SJoseph Chen 	unsigned int fbdiv;
14356f7d184SJoseph Chen 	unsigned int postdiv1;
14456f7d184SJoseph Chen 	unsigned int refdiv;
14556f7d184SJoseph Chen 	unsigned int postdiv2;
14656f7d184SJoseph Chen 	unsigned int dsmpd;
14756f7d184SJoseph Chen 	unsigned int frac;
14856f7d184SJoseph Chen };
14956f7d184SJoseph Chen 
150*9b43a31aSFinley Xiao #define RK3562_PMU0_CRU_BASE		0x10000
151*9b43a31aSFinley Xiao #define RK3562_PMU1_CRU_BASE		0x18000
152*9b43a31aSFinley Xiao #define RK3562_DDR_CRU_BASE		0x20000
153*9b43a31aSFinley Xiao #define RK3562_SUBDDR_CRU_BASE		0x28000
154*9b43a31aSFinley Xiao #define RK3562_PERI_CRU_BASE		0x30000
155*9b43a31aSFinley Xiao 
15656f7d184SJoseph Chen #define RK3562_PLL_CON(x)		((x) * 0x4)
157*9b43a31aSFinley Xiao #define RK3562_PMU1_PLL_CON(x)		((x) * 0x4 + RK3562_PMU1_CRU_BASE + 0x40)
158*9b43a31aSFinley Xiao #define RK3562_SUBDDR_PLL_CON(x)	((x) * 0x4 + RK3562_SUBDDR_CRU_BASE + 0x20)
159*9b43a31aSFinley Xiao #define RK3562_MODE_CON			0x600
160*9b43a31aSFinley Xiao #define RK3562_PMU1_MODE_CON		(RK3562_PMU1_CRU_BASE + 0x380)
161*9b43a31aSFinley Xiao #define RK3562_SUBDDR_MODE_CON		(RK3562_SUBDDR_CRU_BASE + 0x380)
162*9b43a31aSFinley Xiao #define RK3562_GLB_SRST_FST		0x614
163*9b43a31aSFinley Xiao #define RK3562_GLB_SRST_SND		0x618
164*9b43a31aSFinley Xiao #define RK3562_GLB_RST_CON		0x61c
165*9b43a31aSFinley Xiao #define RK3562_GLB_RST_ST		0x620
16656f7d184SJoseph Chen 
16756f7d184SJoseph Chen enum {
168*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON10 */
169*9b43a31aSFinley Xiao 	CLK_CORE_PRE_DIV_SHIFT		= 0,
170*9b43a31aSFinley Xiao 	CLK_CORE_PRE_DIV_MASK		= 0x1f << CLK_CORE_PRE_DIV_SHIFT,
17156f7d184SJoseph Chen 
172*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON11 */
173*9b43a31aSFinley Xiao 	ACLK_CORE_PRE_DIV_SHIFT		= 0,
174*9b43a31aSFinley Xiao 	ACLK_CORE_PRE_DIV_MASK		= 0x7 << ACLK_CORE_PRE_DIV_SHIFT,
175*9b43a31aSFinley Xiao 	CLK_SCANHS_ACLKM_CORE_DIV_SHIFT	= 8,
176*9b43a31aSFinley Xiao 	CLK_SCANHS_ACLKM_CORE_DIV_MASK	= 0x7 << CLK_SCANHS_ACLKM_CORE_DIV_SHIFT,
17756f7d184SJoseph Chen 
178*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON12 */
179*9b43a31aSFinley Xiao 	PCLK_DBG_PRE_DIV_SHIFT		= 0,
180*9b43a31aSFinley Xiao 	PCLK_DBG_PRE_DIV_MASK		= 0xf << PCLK_DBG_PRE_DIV_SHIFT,
181*9b43a31aSFinley Xiao 	CLK_SCANHS_PCLK_DBG_DIV_SHIFT	= 8,
182*9b43a31aSFinley Xiao 	CLK_SCANHS_PCLK_DBG_DIV_MASK	= 0xf << CLK_SCANHS_PCLK_DBG_DIV_SHIFT,
18356f7d184SJoseph Chen 
184*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON28 */
185*9b43a31aSFinley Xiao 	ACLK_VOP_DIV_SHIFT		= 0,
186*9b43a31aSFinley Xiao 	ACLK_VOP_DIV_MASK		= 0x1f << ACLK_VOP_DIV_SHIFT,
187*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_SHIFT		= 6,
188*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_MASK		= 0x3 << ACLK_VOP_SEL_SHIFT,
189*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_GPLL		= 0,
190*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_CPLL,
191*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_VPLL,
192*9b43a31aSFinley Xiao 	ACLK_VOP_SEL_HPLL,
19356f7d184SJoseph Chen 
194*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON30 */
195*9b43a31aSFinley Xiao 	DCLK_VOP_DIV_SHIFT		= 0,
196*9b43a31aSFinley Xiao 	DCLK_VOP_DIV_MASK		= 0xff << DCLK_VOP_DIV_SHIFT,
197*9b43a31aSFinley Xiao 	DCLK_VOP_SEL_SHIFT		= 14,
198*9b43a31aSFinley Xiao 	DCLK_VOP_SEL_MASK		= 0x3 << DCLK_VOP_SEL_SHIFT,
199*9b43a31aSFinley Xiao 	DCLK_VOP_SEL_GPLL		= 0,
200*9b43a31aSFinley Xiao 	DCLK_VOP_SEL_HPLL,
20156f7d184SJoseph Chen 	DCLK_VOP_SEL_VPLL,
202*9b43a31aSFinley Xiao 	DCLK_VOP_SEL_APLL,
20356f7d184SJoseph Chen 
204*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON31 */
205*9b43a31aSFinley Xiao 	DCLK_VOP1_DIV_SHIFT		= 0,
206*9b43a31aSFinley Xiao 	DCLK_VOP1_DIV_MASK		= 0xff << DCLK_VOP1_DIV_SHIFT,
207*9b43a31aSFinley Xiao 	DCLK_VOP1_SEL_SHIFT		= 14,
208*9b43a31aSFinley Xiao 	DCLK_VOP1_SEL_MASK		= 0x3 << DCLK_VOP1_SEL_SHIFT,
20956f7d184SJoseph Chen 
210*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON40 */
211*9b43a31aSFinley Xiao 	ACLK_BUS_DIV_SHIFT		= 0,
212*9b43a31aSFinley Xiao 	ACLK_BUS_DIV_MASK		= 0x1f << ACLK_BUS_DIV_SHIFT,
213*9b43a31aSFinley Xiao 	ACLK_BUS_SEL_SHIFT		= 7,
214*9b43a31aSFinley Xiao 	ACLK_BUS_SEL_MASK		= 0x1 << ACLK_BUS_SEL_SHIFT,
215*9b43a31aSFinley Xiao 	ACLK_BUS_SEL_GPLL		= 0,
216*9b43a31aSFinley Xiao 	ACLK_BUS_SEL_CPLL,
217*9b43a31aSFinley Xiao 	HCLK_BUS_DIV_SHIFT		= 8,
218*9b43a31aSFinley Xiao 	HCLK_BUS_DIV_MASK		= 0x3f << HCLK_BUS_DIV_SHIFT,
219*9b43a31aSFinley Xiao 	HCLK_BUS_SEL_SHIFT		= 15,
220*9b43a31aSFinley Xiao 	HCLK_BUS_SEL_MASK		= 0x1 << HCLK_BUS_SEL_SHIFT,
22156f7d184SJoseph Chen 
222*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON41 */
223*9b43a31aSFinley Xiao 	PCLK_BUS_DIV_SHIFT		= 0,
224*9b43a31aSFinley Xiao 	PCLK_BUS_DIV_MASK		= 0x1f << PCLK_BUS_DIV_SHIFT,
225*9b43a31aSFinley Xiao 	PCLK_BUS_SEL_SHIFT		= 7,
226*9b43a31aSFinley Xiao 	PCLK_BUS_SEL_MASK		= 0x1 << PCLK_BUS_SEL_SHIFT,
227*9b43a31aSFinley Xiao 	CLK_I2C_SEL_SHIFT		= 8,
228*9b43a31aSFinley Xiao 	CLK_I2C_SEL_MASK		= 0x3 << CLK_I2C_SEL_SHIFT,
229*9b43a31aSFinley Xiao 	CLK_I2C_SEL_200M		= 0,
230*9b43a31aSFinley Xiao 	CLK_I2C_SEL_100M,
231*9b43a31aSFinley Xiao 	CLK_I2C_SEL_50M,
232*9b43a31aSFinley Xiao 	CLK_I2C_SEL_24M,
233*9b43a31aSFinley Xiao 	DCLK_BUS_GPIO_SEL_SHIFT		= 15,
234*9b43a31aSFinley Xiao 	DCLK_BUS_GPIO_SEL_MASK		= 0x1 << DCLK_BUS_GPIO_SEL_SHIFT,
23556f7d184SJoseph Chen 
236*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON43 */
237*9b43a31aSFinley Xiao 	CLK_TSADC_DIV_SHIFT		= 0,
238*9b43a31aSFinley Xiao 	CLK_TSADC_DIV_MASK		= 0x7ff << CLK_TSADC_DIV_SHIFT,
239*9b43a31aSFinley Xiao 	CLK_TSADC_TSEN_DIV_SHIFT	= 11,
240*9b43a31aSFinley Xiao 	CLK_TSADC_TSEN_DIV_MASK		= 0x1f << CLK_TSADC_TSEN_DIV_SHIFT,
24156f7d184SJoseph Chen 
242*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON44 */
243*9b43a31aSFinley Xiao 	CLK_SARADC_VCCIO156_DIV_SHIFT	= 0,
244*9b43a31aSFinley Xiao 	CLK_SARADC_VCCIO156_DIV_MASK 	= 0xfff << CLK_SARADC_VCCIO156_DIV_SHIFT,
24556f7d184SJoseph Chen 
246*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON45 */
247*9b43a31aSFinley Xiao 	CLK_GMAC_125M_SEL_SHIFT		= 8,
248*9b43a31aSFinley Xiao 	CLK_GMAC_125M_SEL_MASK		= 0x1 << CLK_GMAC_125M_SEL_SHIFT,
249*9b43a31aSFinley Xiao 	CLK_GMAC_125M			= 0,
250*9b43a31aSFinley Xiao 	CLK_GMAC_24M,
251*9b43a31aSFinley Xiao 	CLK_GMAC_50M_SEL_SHIFT		= 7,
252*9b43a31aSFinley Xiao 	CLK_GMAC_50M_SEL_MASK		= 0x1 << CLK_GMAC_50M_SEL_SHIFT,
253*9b43a31aSFinley Xiao 	CLK_GMAC_50M			= 0,
25456f7d184SJoseph Chen 
255*9b43a31aSFinley Xiao 	/* CRU_CLKSEL_CON46 */
256*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_SEL_SHIFT	= 7,
257*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_SEL_MASK	= 0x1 << CLK_GMAC_ETH_OUT2IO_SEL_SHIFT,
258*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_GPLL	= 0,
259*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_CPLL,
260*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_DIV_SHIFT	= 0,
261*9b43a31aSFinley Xiao 	CLK_GMAC_ETH_OUT2IO_DIV_MASK	= 0x7f,
26256f7d184SJoseph Chen 
263*9b43a31aSFinley Xiao 	/* PMU0CRU_CLKSEL_CON03 */
264*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_DIV_SHIFT		= 8,
265*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_DIV_MASK		= 0x1f << CLK_PMU0_I2C0_DIV_SHIFT,
266*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_SEL_SHIFT		= 14,
267*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_SEL_MASK		= 0x3 << CLK_PMU0_I2C0_SEL_SHIFT,
268*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_SEL_200M		= 0,
269*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_SEL_24M,
270*9b43a31aSFinley Xiao 	CLK_PMU0_I2C0_SEL_32K,
271*9b43a31aSFinley Xiao 
272*9b43a31aSFinley Xiao 	/* PMU1CRU_CLKSEL_CON02 */
273*9b43a31aSFinley Xiao 	CLK_PMU1_UART0_SRC_DIV_SHIFT	= 0,
274*9b43a31aSFinley Xiao 	CLK_PMU1_UART0_SRC_DIV_MASK	= 0xf << CLK_PMU1_UART0_SRC_DIV_SHIFT,
275*9b43a31aSFinley Xiao 	CLK_PMU1_UART0_SEL_SHIFT	= 6,
276*9b43a31aSFinley Xiao 	CLK_PMU1_UART0_SEL_MASK		= 0x3 << CLK_PMU1_UART0_SEL_SHIFT,
277*9b43a31aSFinley Xiao 
278*9b43a31aSFinley Xiao 	/* PMU1CRU_CLKSEL_CON04 */
279*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_DIV_SHIFT		= 0,
280*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_DIV_MASK		= 0x3 << CLK_PMU1_SPI0_DIV_SHIFT,
281*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_SEL_SHIFT		= 6,
282*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_SEL_MASK		= 0x3 << CLK_PMU1_SPI0_SEL_SHIFT,
283*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_SEL_200M		= 0,
284*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_SEL_24M,
285*9b43a31aSFinley Xiao 	CLK_PMU1_SPI0_SEL_32K,
286*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_DIV_SHIFT		= 8,
287*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_DIV_MASK		= 0x3 << CLK_PMU1_PWM0_DIV_SHIFT,
288*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_SEL_SHIFT		= 14,
289*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_SEL_MASK		= 0x3 << CLK_PMU1_PWM0_SEL_SHIFT,
290*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_SEL_200M		= 0,
291*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_SEL_24M,
292*9b43a31aSFinley Xiao 	CLK_PMU1_PWM0_SEL_32K,
293*9b43a31aSFinley Xiao 
294*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON00 */
295*9b43a31aSFinley Xiao 	ACLK_PERI_DIV_SHIFT		= 0,
296*9b43a31aSFinley Xiao 	ACLK_PERI_DIV_MASK		= 0x1f << ACLK_PERI_DIV_SHIFT,
297*9b43a31aSFinley Xiao 	ACLK_PERI_SEL_SHIFT		= 7,
298*9b43a31aSFinley Xiao 	ACLK_PERI_SEL_MASK		= 0x1 << ACLK_PERI_SEL_SHIFT,
299*9b43a31aSFinley Xiao 	ACLK_PERI_SEL_GPLL		= 0,
300*9b43a31aSFinley Xiao 	ACLK_PERI_SEL_CPLL,
301*9b43a31aSFinley Xiao 	HCLK_PERI_DIV_SHIFT		= 8,
302*9b43a31aSFinley Xiao 	HCLK_PERI_DIV_MASK		= 0x3f << HCLK_PERI_DIV_SHIFT,
303*9b43a31aSFinley Xiao 	HCLK_PERI_SEL_SHIFT		= 15,
304*9b43a31aSFinley Xiao 	HCLK_PERI_SEL_MASK		= 0x1 << HCLK_PERI_SEL_SHIFT,
305*9b43a31aSFinley Xiao 
306*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON01 */
307*9b43a31aSFinley Xiao 	PCLK_PERI_DIV_SHIFT		= 0,
308*9b43a31aSFinley Xiao 	PCLK_PERI_DIV_MASK		= 0x1f << PCLK_PERI_DIV_SHIFT,
309*9b43a31aSFinley Xiao 	PCLK_PERI_SEL_SHIFT		= 7,
310*9b43a31aSFinley Xiao 	PCLK_PERI_SEL_MASK		= 0x1 << PCLK_PERI_SEL_SHIFT,
311*9b43a31aSFinley Xiao 	CLK_SAI0_SRC_DIV_SHIFT		= 8,
312*9b43a31aSFinley Xiao 	CLK_SAI0_SRC_DIV_MASK		= 0x3f << CLK_SAI0_SRC_DIV_SHIFT,
313*9b43a31aSFinley Xiao 	CLK_SAI0_SRC_SEL_SHIFT		= 14,
314*9b43a31aSFinley Xiao 	CLK_SAI0_SRC_SEL_MASK		= 0x3 << CLK_SAI0_SRC_SEL_SHIFT,
315*9b43a31aSFinley Xiao 
316*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON16 */
317*9b43a31aSFinley Xiao 	CCLK_SDMMC0_DIV_SHIFT		= 0,
318*9b43a31aSFinley Xiao 	CCLK_SDMMC0_DIV_MASK		= 0xff << CCLK_SDMMC0_DIV_SHIFT,
319*9b43a31aSFinley Xiao 	CCLK_SDMMC0_SEL_SHIFT		= 14,
320*9b43a31aSFinley Xiao 	CCLK_SDMMC0_SEL_MASK		= 0x3 << CCLK_SDMMC0_SEL_SHIFT,
321*9b43a31aSFinley Xiao 	CCLK_SDMMC_SEL_GPLL		= 0,
322*9b43a31aSFinley Xiao 	CCLK_SDMMC_SEL_CPLL,
323*9b43a31aSFinley Xiao 	CCLK_SDMMC_SEL_24M,
324*9b43a31aSFinley Xiao 	CCLK_SDMMC_SEL_HPLL,
325*9b43a31aSFinley Xiao 
326*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON17 */
327*9b43a31aSFinley Xiao 	CCLK_SDMMC1_DIV_SHIFT		= 0,
328*9b43a31aSFinley Xiao 	CCLK_SDMMC1_DIV_MASK		= 0xff << CCLK_SDMMC1_DIV_SHIFT,
329*9b43a31aSFinley Xiao 	CCLK_SDMMC1_SEL_SHIFT		= 14,
330*9b43a31aSFinley Xiao 	CCLK_SDMMC1_SEL_MASK		= 0x3 << CCLK_SDMMC1_SEL_SHIFT,
331*9b43a31aSFinley Xiao 
332*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON18 */
333*9b43a31aSFinley Xiao 	CCLK_EMMC_DIV_SHIFT		= 0,
334*9b43a31aSFinley Xiao 	CCLK_EMMC_DIV_MASK		= 0xff << CCLK_EMMC_DIV_SHIFT,
335*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_SHIFT		= 14,
336*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_MASK		= 0x3 << CCLK_EMMC_SEL_SHIFT,
337*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_GPLL		= 0,
338*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_CPLL,
339*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_24M,
340*9b43a31aSFinley Xiao 	CCLK_EMMC_SEL_HPLL,
341*9b43a31aSFinley Xiao 
342*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON19 */
343*9b43a31aSFinley Xiao 	BCLK_EMMC_DIV_SHIFT		= 8,
344*9b43a31aSFinley Xiao 	BCLK_EMMC_DIV_MASK		= 0x7f << BCLK_EMMC_DIV_SHIFT,
345*9b43a31aSFinley Xiao 	BCLK_EMMC_SEL_SHIFT		= 15,
346*9b43a31aSFinley Xiao 	BCLK_EMMC_SEL_MASK		= 0x1 << BCLK_EMMC_SEL_SHIFT,
347*9b43a31aSFinley Xiao 	BCLK_EMMC_SEL_GPLL		= 0,
348*9b43a31aSFinley Xiao 	BCLK_EMMC_SEL_CPLL,
349*9b43a31aSFinley Xiao 
350*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON20 */
351*9b43a31aSFinley Xiao 	SCLK_SFC_DIV_SHIFT		= 0,
352*9b43a31aSFinley Xiao 	SCLK_SFC_DIV_MASK		= 0xff << SCLK_SFC_DIV_SHIFT,
353*9b43a31aSFinley Xiao 	SCLK_SFC_SEL_SHIFT		= 8,
354*9b43a31aSFinley Xiao 	SCLK_SFC_SEL_MASK		= 0x3 << SCLK_SFC_SEL_SHIFT,
355*9b43a31aSFinley Xiao 	SCLK_SFC_SRC_SEL_GPLL		= 0,
356*9b43a31aSFinley Xiao 	SCLK_SFC_SRC_SEL_CPLL,
357*9b43a31aSFinley Xiao 	SCLK_SFC_SRC_SEL_24M,
358*9b43a31aSFinley Xiao 	CLK_SPI1_SEL_SHIFT		= 12,
359*9b43a31aSFinley Xiao 	CLK_SPI1_SEL_MASK		= 0x3 << CLK_SPI1_SEL_SHIFT,
360*9b43a31aSFinley Xiao 	CLK_SPI_SEL_200M		= 0,
361*9b43a31aSFinley Xiao 	CLK_SPI_SEL_100M,
362*9b43a31aSFinley Xiao 	CLK_SPI_SEL_50M,
363*9b43a31aSFinley Xiao 	CLK_SPI_SEL_24M,
364*9b43a31aSFinley Xiao 	CLK_SPI2_SEL_SHIFT		= 14,
365*9b43a31aSFinley Xiao 	CLK_SPI2_SEL_MASK		= 0x3 << CLK_SPI2_SEL_SHIFT,
366*9b43a31aSFinley Xiao 
367*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON21 */
368*9b43a31aSFinley Xiao 	CLK_UART_SRC_DIV_SHIFT		= 0,
369*9b43a31aSFinley Xiao 	CLK_UART_SRC_DIV_MASK		= 0x7f << CLK_UART_SRC_DIV_SHIFT,
370*9b43a31aSFinley Xiao 	CLK_UART_SRC_SEL_SHIFT		= 8,
371*9b43a31aSFinley Xiao 	CLK_UART_SRC_SEL_MASK		= 0x1 << CLK_UART_SRC_SEL_SHIFT,
372*9b43a31aSFinley Xiao 	CLK_UART_SRC_SEL_GPLL		= 0,
373*9b43a31aSFinley Xiao 	CLK_UART_SRC_SEL_CPLL,
374*9b43a31aSFinley Xiao 	CLK_UART_SEL_SHIFT		= 14,
37556f7d184SJoseph Chen 	CLK_UART_SEL_MASK		= 0x3 << CLK_UART_SEL_SHIFT,
37656f7d184SJoseph Chen 	CLK_UART_SEL_SRC		= 0,
37756f7d184SJoseph Chen 	CLK_UART_SEL_FRAC,
37856f7d184SJoseph Chen 	CLK_UART_SEL_XIN24M,
37956f7d184SJoseph Chen 
380*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON22 */
38156f7d184SJoseph Chen 	CLK_UART_FRAC_NUMERATOR_SHIFT	= 16,
38256f7d184SJoseph Chen 	CLK_UART_FRAC_NUMERATOR_MASK	= 0xffff << 16,
38356f7d184SJoseph Chen 	CLK_UART_FRAC_DENOMINATOR_SHIFT	= 0,
38456f7d184SJoseph Chen 	CLK_UART_FRAC_DENOMINATOR_MASK	= 0xffff,
38556f7d184SJoseph Chen 
386*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON40 */
387*9b43a31aSFinley Xiao 	CLK_PWM1_PERI_SEL_SHIFT		= 0,
388*9b43a31aSFinley Xiao 	CLK_PWM1_PERI_SEL_MASK		= 0x3 << CLK_PWM1_PERI_SEL_SHIFT,
38956f7d184SJoseph Chen 	CLK_PWM_SEL_100M		= 0,
390*9b43a31aSFinley Xiao 	CLK_PWM_SEL_50M,
39156f7d184SJoseph Chen 	CLK_PWM_SEL_24M,
392*9b43a31aSFinley Xiao 	CLK_PWM2_PERI_SEL_SHIFT		= 6,
393*9b43a31aSFinley Xiao 	CLK_PWM2_PERI_SEL_MASK		= 0x3 << CLK_PWM2_PERI_SEL_SHIFT,
394*9b43a31aSFinley Xiao 	CLK_PWM3_PERI_SEL_SHIFT		= 8,
395*9b43a31aSFinley Xiao 	CLK_PWM3_PERI_SEL_MASK		= 0x3 << CLK_PWM3_PERI_SEL_SHIFT,
39656f7d184SJoseph Chen 
397*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON43 */
398*9b43a31aSFinley Xiao 	CLK_CORE_CRYPTO_SEL_SHIFT	= 0,
399*9b43a31aSFinley Xiao 	CLK_CORE_CRYPTO_SEL_MASK	= 0x3 << CLK_CORE_CRYPTO_SEL_SHIFT,
400*9b43a31aSFinley Xiao 	CLK_CORE_CRYPTO_SEL_200M	= 0,
401*9b43a31aSFinley Xiao 	CLK_CORE_CRYPTO_SEL_100M,
402*9b43a31aSFinley Xiao 	CLK_CORE_CRYPTO_SEL_24M,
403*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_SHIFT	= 6,
404*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_MASK		= 0x3 << CLK_PKA_CRYPTO_SEL_SHIFT,
405*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_300M		= 0,
406*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_200M,
407*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_100M,
408*9b43a31aSFinley Xiao 	CLK_PKA_CRYPTO_SEL_24M,
409*9b43a31aSFinley Xiao 	TCLK_PERI_WDT_SEL_SHIFT		= 15,
410*9b43a31aSFinley Xiao 	TCLK_PERI_WDT_SEL_MASK		= 0x1 << TCLK_PERI_WDT_SEL_SHIFT,
41156f7d184SJoseph Chen 
412*9b43a31aSFinley Xiao 	/* PERICRU_CLKSEL_CON46 */
413*9b43a31aSFinley Xiao 	CLK_SARADC_DIV_SHIFT		= 0,
414*9b43a31aSFinley Xiao 	CLK_SARADC_DIV_MASK		= 0xfff << CLK_SARADC_DIV_SHIFT,
41556f7d184SJoseph Chen };
41656f7d184SJoseph Chen #endif
417