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