xref: /OK3568_Linux_fs/u-boot/arch/arm/include/asm/arch-rockchip/cru_rk1808.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef _ASM_ARCH_CRU_rk1808_H
7*4882a593Smuzhiyun #define _ASM_ARCH_CRU_rk1808_H
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <common.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define MHz		1000000
12*4882a593Smuzhiyun #define KHz		1000
13*4882a593Smuzhiyun #define OSC_HZ		(24 * MHz)
14*4882a593Smuzhiyun #define APLL_HZ		(1200 * MHz)
15*4882a593Smuzhiyun #define PCLK_PMU_HZ	(100 * MHz)
16*4882a593Smuzhiyun #define GPLL_HZ		(594 * MHz)
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* PX30 pll id */
19*4882a593Smuzhiyun enum rk1808_pll_id {
20*4882a593Smuzhiyun 	APLL,
21*4882a593Smuzhiyun 	DPLL,
22*4882a593Smuzhiyun 	CPLL,
23*4882a593Smuzhiyun 	GPLL,
24*4882a593Smuzhiyun 	NPLL,
25*4882a593Smuzhiyun 	PPLL,
26*4882a593Smuzhiyun 	PLL_COUNT,
27*4882a593Smuzhiyun };
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun struct rk1808_clk_info {
30*4882a593Smuzhiyun 	unsigned long id;
31*4882a593Smuzhiyun 	char *name;
32*4882a593Smuzhiyun 	bool is_cru;
33*4882a593Smuzhiyun };
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* Private data for the clock driver - used by rockchip_get_cru() */
36*4882a593Smuzhiyun struct rk1808_clk_priv {
37*4882a593Smuzhiyun 	struct rk1808_cru *cru;
38*4882a593Smuzhiyun 	ulong armclk_hz;
39*4882a593Smuzhiyun 	ulong cpll_hz;
40*4882a593Smuzhiyun 	ulong gpll_hz;
41*4882a593Smuzhiyun 	ulong npll_hz;
42*4882a593Smuzhiyun 	ulong armclk_enter_hz;
43*4882a593Smuzhiyun 	ulong armclk_init_hz;
44*4882a593Smuzhiyun 	bool sync_kernel;
45*4882a593Smuzhiyun 	bool set_armclk_rate;
46*4882a593Smuzhiyun };
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun struct rk1808_pll {
49*4882a593Smuzhiyun 	unsigned int con0;
50*4882a593Smuzhiyun 	unsigned int con1;
51*4882a593Smuzhiyun 	unsigned int con2;
52*4882a593Smuzhiyun 	unsigned int con3;
53*4882a593Smuzhiyun 	unsigned int con4;
54*4882a593Smuzhiyun 	unsigned int reserved0[3];
55*4882a593Smuzhiyun };
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun struct rk1808_cru {
58*4882a593Smuzhiyun 	struct rk1808_pll pll[5];
59*4882a593Smuzhiyun 	unsigned int mode;
60*4882a593Smuzhiyun 	unsigned int misc;
61*4882a593Smuzhiyun 	unsigned int misc1;
62*4882a593Smuzhiyun 	unsigned int reserved2[1];
63*4882a593Smuzhiyun 	unsigned int glb_cnt_th;
64*4882a593Smuzhiyun 	unsigned int glb_rst_st;
65*4882a593Smuzhiyun 	unsigned int glb_srst_fst;
66*4882a593Smuzhiyun 	unsigned int glb_srst_snd;
67*4882a593Smuzhiyun 	unsigned int glb_rst_con;
68*4882a593Smuzhiyun 	unsigned int reserved3[7];
69*4882a593Smuzhiyun 	unsigned int hwffc_con0;
70*4882a593Smuzhiyun 	unsigned int reserved4;
71*4882a593Smuzhiyun 	unsigned int hwffc_th;
72*4882a593Smuzhiyun 	unsigned int hwffc_intst;
73*4882a593Smuzhiyun 	unsigned int apll_con0_s;
74*4882a593Smuzhiyun 	unsigned int apll_con1_s;
75*4882a593Smuzhiyun 	unsigned int clksel_con0_s;
76*4882a593Smuzhiyun 	unsigned int reserved5;
77*4882a593Smuzhiyun 	unsigned int clksel_con[73];
78*4882a593Smuzhiyun 	unsigned int reserved6[3];
79*4882a593Smuzhiyun 	unsigned int clkgate_con[20];
80*4882a593Smuzhiyun 	unsigned int ssgtbl[32];
81*4882a593Smuzhiyun 	unsigned int softrst_con[16];
82*4882a593Smuzhiyun 	unsigned int reserved7[(0x380 - 0x33c) / 4 - 1];
83*4882a593Smuzhiyun 	unsigned int sdmmc_con[2];
84*4882a593Smuzhiyun 	unsigned int sdio_con[2];
85*4882a593Smuzhiyun 	unsigned int emmc_con[2];
86*4882a593Smuzhiyun 	unsigned int reserved8[(0x400 - 0x394) / 4 - 1];
87*4882a593Smuzhiyun 	unsigned int autocs_con[10];
88*4882a593Smuzhiyun 	unsigned int reserved9[(0x4000 - 0x424) / 4 - 1];
89*4882a593Smuzhiyun 	struct rk1808_pll pmu_pll;
90*4882a593Smuzhiyun 	unsigned int pmu_mode;
91*4882a593Smuzhiyun 	unsigned int reserved10[(0x4040 - 0x4020) / 4 - 1];
92*4882a593Smuzhiyun 	unsigned int pmu_clksel_con[8];
93*4882a593Smuzhiyun 	unsigned int reserved11[(0x4080 - 0x405c) / 4 - 1];
94*4882a593Smuzhiyun 	unsigned int pmu_clkgate_con[2];
95*4882a593Smuzhiyun 	unsigned int reserved12[(0x40c0 - 0x4084) / 4 - 1];
96*4882a593Smuzhiyun 	unsigned int pmu_autocs_con[2];
97*4882a593Smuzhiyun };
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun check_member(rk1808_cru, pmu_autocs_con[0], 0x40c0);
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define RK1808_PLL_CON(x)		((x) * 0x4)
102*4882a593Smuzhiyun #define RK1808_MODE_CON			0xa0
103*4882a593Smuzhiyun #define RK1808_PMU_PLL_CON(x)		((x) * 0x4 + 0x4000)
104*4882a593Smuzhiyun #define RK1808_PMU_MODE_CON		0x4020
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun enum {
107*4882a593Smuzhiyun 	/* CRU_CLK_SEL0_CON */
108*4882a593Smuzhiyun 	CORE_ACLK_DIV_SHIFT		= 12,
109*4882a593Smuzhiyun 	CORE_ACLK_DIV_MASK		= 0x07 << CORE_ACLK_DIV_SHIFT,
110*4882a593Smuzhiyun 	CORE_DBG_DIV_SHIFT		= 8,
111*4882a593Smuzhiyun 	CORE_DBG_DIV_MASK		= 0x03 << CORE_DBG_DIV_SHIFT,
112*4882a593Smuzhiyun 	CORE_CLK_PLL_SEL_SHIFT		= 7,
113*4882a593Smuzhiyun 	CORE_CLK_PLL_SEL_MASK		= 1 << CORE_CLK_PLL_SEL_SHIFT,
114*4882a593Smuzhiyun 	CORE_CLK_PLL_SEL_APLL		= 0,
115*4882a593Smuzhiyun 	CORE_CLK_PLL_SEL_GPLL,
116*4882a593Smuzhiyun 	CORE_DIV_CON_SHIFT		= 0,
117*4882a593Smuzhiyun 	CORE_DIV_CON_MASK		= 0x0f << CORE_DIV_CON_SHIFT,
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun 	/* CRU_CLK_SEL4_CON */
120*4882a593Smuzhiyun 	ACLK_VOP_PLL_SEL_GPLL		= 0,
121*4882a593Smuzhiyun 	ACLK_VOP_PLL_SEL_CPLL		= 1,
122*4882a593Smuzhiyun 	ACLK_VOP_PLL_SEL_SHIFT		= 7,
123*4882a593Smuzhiyun 	ACLK_VOP_PLL_SEL_MASK		= 1 << ACLK_VOP_PLL_SEL_SHIFT,
124*4882a593Smuzhiyun 	ACLK_VOP_DIV_CON_SHIFT		= 0,
125*4882a593Smuzhiyun 	ACLK_VOP_DIV_CON_MASK		= 0x1f << ACLK_VOP_DIV_CON_SHIFT,
126*4882a593Smuzhiyun 	HCLK_VOP_DIV_CON_SHIFT		= 8,
127*4882a593Smuzhiyun 	HCLK_VOP_DIV_CON_MASK		= 0x1f << HCLK_VOP_DIV_CON_SHIFT,
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun 	/* CRU_CLK_SEL5_CON */
130*4882a593Smuzhiyun 	DCLK_VOPRAW_SEL_VOPRAW		= 0,
131*4882a593Smuzhiyun 	DCLK_VOPRAW_SEL_VOPRAW_FRAC	= 1,
132*4882a593Smuzhiyun 	DCLK_VOPRAW_SEL_XIN24M		= 2,
133*4882a593Smuzhiyun 	DCLK_VOPRAW_SEL_SHIFT		= 14,
134*4882a593Smuzhiyun 	DCLK_VOPRAW_SEL_MASK		= 3 << DCLK_VOPRAW_SEL_SHIFT,
135*4882a593Smuzhiyun 	DCLK_VOPRAW_PLL_SEL_CPLL	= 0,
136*4882a593Smuzhiyun 	DCLK_VOPRAW_PLL_SEL_GPLL	= 1,
137*4882a593Smuzhiyun 	DCLK_VOPRAW_PLL_SEL_NPLL	= 2,
138*4882a593Smuzhiyun 	DCLK_VOPRAW_PLL_SEL_SHIFT	= 10,
139*4882a593Smuzhiyun 	DCLK_VOPRAW_PLL_SEL_MASK	= 3 << DCLK_VOPRAW_PLL_SEL_SHIFT,
140*4882a593Smuzhiyun 	DCLK_VOPRAW_DIV_CON_SHIFT	= 0,
141*4882a593Smuzhiyun 	DCLK_VOPRAW_DIV_CON_MASK	= 0xff << DCLK_VOPRAW_DIV_CON_SHIFT,
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun 	/* CRU_CLK_SEL7_CON */
144*4882a593Smuzhiyun 	DCLK_VOPLITE_SEL_VOPRAW		= 0,
145*4882a593Smuzhiyun 	DCLK_VOPLITE_SEL_VOPRAW_FRAC	= 1,
146*4882a593Smuzhiyun 	DCLK_VOPLITE_SEL_XIN24M		= 2,
147*4882a593Smuzhiyun 	DCLK_VOPLITE_SEL_SHIFT		= 14,
148*4882a593Smuzhiyun 	DCLK_VOPLITE_SEL_MASK		= 3 << DCLK_VOPLITE_SEL_SHIFT,
149*4882a593Smuzhiyun 	DCLK_VOPLITE_PLL_SEL_CPLL	= 0,
150*4882a593Smuzhiyun 	DCLK_VOPLITE_PLL_SEL_GPLL	= 1,
151*4882a593Smuzhiyun 	DCLK_VOPLITE_PLL_SEL_NPLL	= 2,
152*4882a593Smuzhiyun 	DCLK_VOPLITE_PLL_SEL_SHIFT	= 10,
153*4882a593Smuzhiyun 	DCLK_VOPLITE_PLL_SEL_MASK	= 3 << DCLK_VOPLITE_PLL_SEL_SHIFT,
154*4882a593Smuzhiyun 	DCLK_VOPLITE_DIV_CON_SHIFT	= 0,
155*4882a593Smuzhiyun 	DCLK_VOPLITE_DIV_CON_MASK	= 0xff << DCLK_VOPLITE_DIV_CON_SHIFT,
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun 	/* CRU_CLK_SEL19_CON */
158*4882a593Smuzhiyun 	CLK_PERI_PLL_SEL_GPLL		= 0,
159*4882a593Smuzhiyun 	CLK_PERI_PLL_SEL_CPLL		= 1,
160*4882a593Smuzhiyun 	CLK_PERI_PLL_SEL_SHIFT		= 15,
161*4882a593Smuzhiyun 	CLK_PERI_PLL_SEL_MASK		= 1 << CLK_PERI_PLL_SEL_SHIFT,
162*4882a593Smuzhiyun 	LSCLK_PERI_DIV_CON_SHIFT	= 8,
163*4882a593Smuzhiyun 	LSCLK_PERI_DIV_CON_MASK		= 0x1f << LSCLK_PERI_DIV_CON_SHIFT,
164*4882a593Smuzhiyun 	MSCLK_PERI_DIV_CON_SHIFT	= 0,
165*4882a593Smuzhiyun 	MSCLK_PERI_DIV_CON_MASK		= 0x1f << MSCLK_PERI_DIV_CON_SHIFT,
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun 	/* CRU_CLKSEL24_CON */
168*4882a593Smuzhiyun 	EMMC_PLL_SHIFT			= 14,
169*4882a593Smuzhiyun 	EMMC_PLL_MASK			= 3 << EMMC_PLL_SHIFT,
170*4882a593Smuzhiyun 	EMMC_SEL_GPLL			= 0,
171*4882a593Smuzhiyun 	EMMC_SEL_CPLL,
172*4882a593Smuzhiyun 	EMMC_SEL_NPLL,
173*4882a593Smuzhiyun 	EMMC_SEL_24M,
174*4882a593Smuzhiyun 	EMMC_DIV_SHIFT			= 0,
175*4882a593Smuzhiyun 	EMMC_DIV_MASK			= 0xff << EMMC_DIV_SHIFT,
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun 	/* CRU_CLKSEL25_CON */
178*4882a593Smuzhiyun 	EMMC_CLK_SEL_SHIFT		= 15,
179*4882a593Smuzhiyun 	EMMC_CLK_SEL_MASK		= 1 << EMMC_CLK_SEL_SHIFT,
180*4882a593Smuzhiyun 	EMMC_CLK_SEL_EMMC		= 0,
181*4882a593Smuzhiyun 	EMMC_CLK_SEL_EMMC_DIV50,
182*4882a593Smuzhiyun 	EMMC_DIV50_SHIFT		= 0,
183*4882a593Smuzhiyun 	EMMC_DIV50_MASK			= 0xff << EMMC_DIV_SHIFT,
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun 	/* CRU_CLKSEL26_CON */
186*4882a593Smuzhiyun 	GMAC_PLL_SEL_SHIFT		= 14,
187*4882a593Smuzhiyun 	GMAC_PLL_SEL_MASK		= 3 << GMAC_PLL_SEL_SHIFT,
188*4882a593Smuzhiyun 	GMAC_PLL_SEL_CPLL		= 0,
189*4882a593Smuzhiyun 	GMAC_PLL_SEL_NPLL,
190*4882a593Smuzhiyun 	GMAC_PLL_SEL_PPLL,
191*4882a593Smuzhiyun 	CLK_GMAC_DIV_SHIFT		= 8,
192*4882a593Smuzhiyun 	CLK_GMAC_DIV_MASK		= 0x1f << CLK_GMAC_DIV_SHIFT,
193*4882a593Smuzhiyun 	SFC_PLL_SEL_SHIFT		= 7,
194*4882a593Smuzhiyun 	SFC_PLL_SEL_MASK		= 1 << SFC_PLL_SEL_SHIFT,
195*4882a593Smuzhiyun 	SFC_DIV_CON_SHIFT		= 0,
196*4882a593Smuzhiyun 	SFC_DIV_CON_MASK		= 0x7f,
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun 	/* CRU_CLK_SEL27_CON */
199*4882a593Smuzhiyun 	CLK_BUS_PLL_SEL_GPLL		= 0,
200*4882a593Smuzhiyun 	CLK_BUS_PLL_SEL_CPLL		= 1,
201*4882a593Smuzhiyun 	CLK_BUS_PLL_SEL_SHIFT		= 15,
202*4882a593Smuzhiyun 	CLK_BUS_PLL_SEL_MASK		= 1 << CLK_BUS_PLL_SEL_SHIFT,
203*4882a593Smuzhiyun 	HSCLK_BUS_DIV_CON_SHIFT		= 8,
204*4882a593Smuzhiyun 	HSCLK_BUS_DIV_CON_MASK		= 0x1f << HSCLK_BUS_DIV_CON_SHIFT,
205*4882a593Smuzhiyun 	RGMII_CLK_SEL_SHIFT		= 2,
206*4882a593Smuzhiyun 	RGMII_CLK_SEL_MASK		= 3 << RGMII_CLK_SEL_SHIFT,
207*4882a593Smuzhiyun 	RGMII_CLK_SEL_125M		= 0,
208*4882a593Smuzhiyun 	RGMII_CLK_SEL_2M		= 2,
209*4882a593Smuzhiyun 	RGMIIC_CLK_SEL_25M		= 3,
210*4882a593Smuzhiyun 	RMII_CLK_SEL_SHIFT		= 1,
211*4882a593Smuzhiyun 	RMII_CLK_SEL_MASK		= 1 << RMII_CLK_SEL_SHIFT,
212*4882a593Smuzhiyun 	RMII_EXTCLK_SEL_SHIFT		= 0,
213*4882a593Smuzhiyun 	RMII_EXTCLK_SEL_MASK		= 1 << RMII_EXTCLK_SEL_SHIFT,
214*4882a593Smuzhiyun 	RMII_EXTCLK_SEL_INT		= 0,
215*4882a593Smuzhiyun 	RMII_EXTCLK_SEL_EXT,
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun 	/* CRU_CLK_SEL28_CON */
218*4882a593Smuzhiyun 	MSCLK_BUS_DIV_CON_SHIFT		= 8,
219*4882a593Smuzhiyun 	MSCLK_BUS_DIV_CON_MASK		= 0x1f << MSCLK_BUS_DIV_CON_SHIFT,
220*4882a593Smuzhiyun 	LSCLK_BUS_DIV_CON_SHIFT		= 0,
221*4882a593Smuzhiyun 	LSCLK_BUS_DIV_CON_MASK		= 0x1f << LSCLK_BUS_DIV_CON_SHIFT,
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun 	/* CRU_CLK_SEL29_CON */
224*4882a593Smuzhiyun 	CRYPTO_APK_SEL_SHIFT	= 15,
225*4882a593Smuzhiyun 	CRYPTO_APK_PLL_SEL_MASK	= 1 << CRYPTO_APK_SEL_SHIFT,
226*4882a593Smuzhiyun 	CRYPTO_PLL_SEL_GPLL	= 0,
227*4882a593Smuzhiyun 	CRYPTO_PLL_SEL_CPLL,
228*4882a593Smuzhiyun 	CRYPTO_APK_DIV_SHIFT	= 8,
229*4882a593Smuzhiyun 	CRYPTO_APK_DIV_MASK	= 0x1f << CRYPTO_APK_DIV_SHIFT,
230*4882a593Smuzhiyun 	CRYPTO_PLL_SEL_SHIFT	= 7,
231*4882a593Smuzhiyun 	CRYPTO_PLL_SEL_MASK	= 1 << CRYPTO_PLL_SEL_SHIFT,
232*4882a593Smuzhiyun 	CRYPTO_DIV_SHIFT	= 0,
233*4882a593Smuzhiyun 	CRYPTO_DIV_MASK		= 0x1f << CRYPTO_DIV_SHIFT,
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun 	/* CRU_CLK_SEL59_CON */
236*4882a593Smuzhiyun 	CLK_I2C_PLL_SEL_GPLL		= 0,
237*4882a593Smuzhiyun 	CLK_I2C_PLL_SEL_24M,
238*4882a593Smuzhiyun 	CLK_I2C2_PLL_SEL_SHIFT		= 15,
239*4882a593Smuzhiyun 	CLK_I2C2_DIV_CON_SHIFT		= 8,
240*4882a593Smuzhiyun 	CLK_I2C2_DIV_CON_MASK		= 0x7f << CLK_I2C2_DIV_CON_SHIFT,
241*4882a593Smuzhiyun 	CLK_I2C2_PLL_SEL_MASK		= 1 << CLK_I2C2_PLL_SEL_SHIFT,
242*4882a593Smuzhiyun 	CLK_I2C1_PLL_SEL_SHIFT		= 7,
243*4882a593Smuzhiyun 	CLK_I2C1_DIV_CON_SHIFT		= 0,
244*4882a593Smuzhiyun 	CLK_I2C1_DIV_CON_MASK		= 0x7f,
245*4882a593Smuzhiyun 	CLK_I2C1_PLL_SEL_MASK		= 1 << CLK_I2C1_PLL_SEL_SHIFT,
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun 	/* CRU_CLK_SEL60_CON */
248*4882a593Smuzhiyun 	CLK_SPI_PLL_SEL_GPLL		= 0,
249*4882a593Smuzhiyun 	CLK_SPI_PLL_SEL_24M,
250*4882a593Smuzhiyun 	CLK_SPI0_PLL_SEL_SHIFT		= 15,
251*4882a593Smuzhiyun 	CLK_SPI0_DIV_CON_SHIFT		= 8,
252*4882a593Smuzhiyun 	CLK_SPI0_DIV_CON_MASK		= 0x7f << CLK_SPI0_DIV_CON_SHIFT,
253*4882a593Smuzhiyun 	CLK_SPI0_PLL_SEL_MASK		= 1 << CLK_SPI0_PLL_SEL_SHIFT,
254*4882a593Smuzhiyun 	CLK_I2C3_PLL_SEL_SHIFT		= 7,
255*4882a593Smuzhiyun 	CLK_I2C3_DIV_CON_SHIFT		= 0,
256*4882a593Smuzhiyun 	CLK_I2C3_DIV_CON_MASK		= 0x7f,
257*4882a593Smuzhiyun 	CLK_I2C3_PLL_SEL_MASK		= 1 << CLK_I2C3_PLL_SEL_SHIFT,
258*4882a593Smuzhiyun 
259*4882a593Smuzhiyun 	/* CRU_CLK_SEL61_CON */
260*4882a593Smuzhiyun 	CLK_SPI2_PLL_SEL_SHIFT		= 15,
261*4882a593Smuzhiyun 	CLK_SPI2_DIV_CON_SHIFT		= 8,
262*4882a593Smuzhiyun 	CLK_SPI2_DIV_CON_MASK		= 0x7f << CLK_SPI2_DIV_CON_SHIFT,
263*4882a593Smuzhiyun 	CLK_SPI2_PLL_SEL_MASK		= 1 << CLK_SPI2_PLL_SEL_SHIFT,
264*4882a593Smuzhiyun 	CLK_SPI1_PLL_SEL_SHIFT		= 7,
265*4882a593Smuzhiyun 	CLK_SPI1_DIV_CON_SHIFT		= 0,
266*4882a593Smuzhiyun 	CLK_SPI1_DIV_CON_MASK		= 0x7f,
267*4882a593Smuzhiyun 	CLK_SPI1_PLL_SEL_MASK		= 1 << CLK_SPI1_PLL_SEL_SHIFT,
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun 	/* CRU_CLK_SEL62_CON */
270*4882a593Smuzhiyun 	CLK_TSADC_DIV_CON_SHIFT		= 0,
271*4882a593Smuzhiyun 	CLK_TSADC_DIV_CON_MASK		= 0x3ff,
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun 	/* CRU_CLK_SEL63_CON */
274*4882a593Smuzhiyun 	CLK_SARADC_DIV_CON_SHIFT	= 0,
275*4882a593Smuzhiyun 	CLK_SARADC_DIV_CON_MASK		= 0x3ff,
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun 	/* CRU_CLK_SEL69_CON */
278*4882a593Smuzhiyun 	CLK_PWM_PLL_SEL_GPLL		= 0,
279*4882a593Smuzhiyun 	CLK_PWM_PLL_SEL_24M,
280*4882a593Smuzhiyun 	CLK_PWM1_PLL_SEL_SHIFT		= 15,
281*4882a593Smuzhiyun 	CLK_PWM1_DIV_CON_SHIFT		= 8,
282*4882a593Smuzhiyun 	CLK_PWM1_DIV_CON_MASK		= 0x7f << CLK_PWM1_DIV_CON_SHIFT,
283*4882a593Smuzhiyun 	CLK_PWM1_PLL_SEL_MASK		= 1 << CLK_PWM1_PLL_SEL_SHIFT,
284*4882a593Smuzhiyun 	CLK_PWM0_PLL_SEL_SHIFT		= 7,
285*4882a593Smuzhiyun 	CLK_PWM0_DIV_CON_SHIFT		= 0,
286*4882a593Smuzhiyun 	CLK_PWM0_DIV_CON_MASK		= 0x7f,
287*4882a593Smuzhiyun 	CLK_PWM0_PLL_SEL_MASK		= 1 << CLK_PWM0_PLL_SEL_SHIFT,
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun 	/* CRU_CLK_SEL70_CON */
290*4882a593Smuzhiyun 	CLK_PWM2_PLL_SEL_SHIFT		= 7,
291*4882a593Smuzhiyun 	CLK_PWM2_DIV_CON_SHIFT		= 0,
292*4882a593Smuzhiyun 	CLK_PWM2_DIV_CON_MASK		= 0x7f,
293*4882a593Smuzhiyun 	CLK_PWM2_PLL_SEL_MASK		= 1 << CLK_PWM2_PLL_SEL_SHIFT,
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun 	/* CRU_CLK_SEL71_CON */
296*4882a593Smuzhiyun 	CLK_I2C5_PLL_SEL_SHIFT		= 15,
297*4882a593Smuzhiyun 	CLK_I2C5_DIV_CON_SHIFT		= 8,
298*4882a593Smuzhiyun 	CLK_I2C5_DIV_CON_MASK		= 0x7f << CLK_I2C5_DIV_CON_SHIFT,
299*4882a593Smuzhiyun 	CLK_I2C5_PLL_SEL_MASK		= 1 << CLK_I2C5_PLL_SEL_SHIFT,
300*4882a593Smuzhiyun 	CLK_I2C4_PLL_SEL_SHIFT		= 7,
301*4882a593Smuzhiyun 	CLK_I2C4_DIV_CON_SHIFT		= 0,
302*4882a593Smuzhiyun 	CLK_I2C4_DIV_CON_MASK		= 0x7f,
303*4882a593Smuzhiyun 	CLK_I2C4_PLL_SEL_MASK		= 1 << CLK_I2C4_PLL_SEL_SHIFT,
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun 	/* CRU_PMU_CLK_SEL7_CON */
306*4882a593Smuzhiyun 	CLK_I2C0_PLL_SEL_PPLL		= 0,
307*4882a593Smuzhiyun 	CLK_I2C0_PLL_SEL_SHIFT		= 15,
308*4882a593Smuzhiyun 	CLK_I2C0_DIV_CON_SHIFT		= 8,
309*4882a593Smuzhiyun 	CLK_I2C0_PLL_SEL_MASK		= 1 << CLK_I2C0_PLL_SEL_SHIFT,
310*4882a593Smuzhiyun 	CLK_I2C0_DIV_CON_MASK		= 0x3f << CLK_I2C0_DIV_CON_SHIFT,
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun 	/* PMUCRU_CLK_SEL0_CON */
313*4882a593Smuzhiyun 	PCLK_PMU_DIV_CON_SHIFT		= 0,
314*4882a593Smuzhiyun 	PCLK_PMU_DIV_CON_MASK		= 0x1f << PCLK_PMU_DIV_CON_SHIFT,
315*4882a593Smuzhiyun };
316*4882a593Smuzhiyun #endif
317