xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/cru_rk3576.h (revision 5c6e0812b45b3700adf1840c517c4e837c0dbe18)
10265e00cSElaine Zhang /* SPDX-License-Identifier: GPL-2.0 */
20265e00cSElaine Zhang /*
30265e00cSElaine Zhang  * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
40265e00cSElaine Zhang  * Author: Elaine Zhang <zhangqing@rock-chips.com>
50265e00cSElaine Zhang  */
60265e00cSElaine Zhang 
70265e00cSElaine Zhang #ifndef _ASM_ARCH_CRU_RK3576_H
80265e00cSElaine Zhang #define _ASM_ARCH_CRU_RK3576_H
90265e00cSElaine Zhang 
100265e00cSElaine Zhang #define MHz		1000000
110265e00cSElaine Zhang #define KHz		1000
120265e00cSElaine Zhang #define OSC_HZ		(24 * MHz)
130265e00cSElaine Zhang 
140265e00cSElaine Zhang #define CPU_PVTPLL_HZ	(1008 * MHz)
150265e00cSElaine Zhang #define LPLL_HZ		(816 * MHz)
160265e00cSElaine Zhang #define GPLL_HZ		(1188 * MHz)
170265e00cSElaine Zhang #define CPLL_HZ		(1000 * MHz)
180265e00cSElaine Zhang #define PPLL_HZ		(1100 * MHz)
190265e00cSElaine Zhang #define GMAC0_PTP_REFCLK_IN	(24 * MHz)
200265e00cSElaine Zhang #define GMAC1_PTP_REFCLK_IN	(24 * MHz)
210265e00cSElaine Zhang /* RK3576 pll id */
220265e00cSElaine Zhang enum rk3576_pll_id {
230265e00cSElaine Zhang 	BPLL,
240265e00cSElaine Zhang 	LPLL,
250265e00cSElaine Zhang 	DPLL,
260265e00cSElaine Zhang 	CPLL,
270265e00cSElaine Zhang 	GPLL,
280265e00cSElaine Zhang 	VPLL,
290265e00cSElaine Zhang 	AUPLL,
300265e00cSElaine Zhang 	SPLL,
310265e00cSElaine Zhang 	PPLL,
320265e00cSElaine Zhang 	PLL_COUNT,
330265e00cSElaine Zhang };
340265e00cSElaine Zhang 
350265e00cSElaine Zhang struct rk3576_clk_info {
360265e00cSElaine Zhang 	unsigned long id;
370265e00cSElaine Zhang 	char *name;
380265e00cSElaine Zhang 	bool is_cru;
390265e00cSElaine Zhang };
400265e00cSElaine Zhang 
410265e00cSElaine Zhang struct rk3576_clk_priv {
420265e00cSElaine Zhang 	struct rk3576_cru *cru;
430265e00cSElaine Zhang 	struct rk3576_grf *grf;
440265e00cSElaine Zhang 	ulong ppll_hz;
450265e00cSElaine Zhang 	ulong gpll_hz;
460265e00cSElaine Zhang 	ulong cpll_hz;
470265e00cSElaine Zhang 	ulong vpll_hz;
480265e00cSElaine Zhang 	ulong aupll_hz;
490265e00cSElaine Zhang 	ulong spll_hz;
500265e00cSElaine Zhang 	ulong lpll_hz;
510265e00cSElaine Zhang 	ulong bpll_hz;
520265e00cSElaine Zhang 	ulong armclk_hz;
530265e00cSElaine Zhang 	ulong armclk_enter_hz;
540265e00cSElaine Zhang 	ulong armclk_init_hz;
550265e00cSElaine Zhang 	bool sync_kernel;
560265e00cSElaine Zhang 	bool set_armclk_rate;
570265e00cSElaine Zhang };
580265e00cSElaine Zhang 
590265e00cSElaine Zhang struct rk3576_pll {
600265e00cSElaine Zhang 	unsigned int con0;
610265e00cSElaine Zhang 	unsigned int con1;
620265e00cSElaine Zhang 	unsigned int con2;
630265e00cSElaine Zhang 	unsigned int con3;
640265e00cSElaine Zhang 	unsigned int con4;
650265e00cSElaine Zhang 	unsigned int reserved0[3];
660265e00cSElaine Zhang };
670265e00cSElaine Zhang 
680265e00cSElaine Zhang struct rk3576_cru {
690265e00cSElaine Zhang 	struct rk3576_pll pll[18];
700265e00cSElaine Zhang 	unsigned int reserved0[16];/* Address Offset: 0x0240 */
710265e00cSElaine Zhang 	unsigned int mode_con00;/* Address Offset: 0x0280 */
720265e00cSElaine Zhang 	unsigned int reserved1[31];/* Address Offset: 0x0284 */
730265e00cSElaine Zhang 	unsigned int clksel_con[181]; /* Address Offset: 0x0300 */
740265e00cSElaine Zhang 	unsigned int reserved2[139];/* Address Offset: 0x05d4 */
750265e00cSElaine Zhang 	unsigned int clkgate_con[80];/* Address Offset: 0x0800 */
760265e00cSElaine Zhang 	unsigned int reserved3[48];/* Address Offset: 0x0938 */
770265e00cSElaine Zhang 	unsigned int softrst_con[80];/* Address Offset: 0x0400 */
780265e00cSElaine Zhang 	unsigned int reserved4[48];/* Address Offset: 0x0b38 */
790265e00cSElaine Zhang 	unsigned int glb_cnt_th;/* Address Offset: 0x0c00 */
800265e00cSElaine Zhang 	unsigned int glb_rst_st;/* Address Offset: 0x0c04 */
810265e00cSElaine Zhang 	unsigned int glb_srst_fst;/* Address Offset: 0x0c08 */
820265e00cSElaine Zhang 	unsigned int glb_srsr_snd; /* Address Offset: 0x0c0c */
830265e00cSElaine Zhang 	unsigned int glb_rst_con;/* Address Offset: 0x0c10 */
840265e00cSElaine Zhang 	unsigned int reserved5[43];/* Address Offset: 0x0c14 */
850265e00cSElaine Zhang 	unsigned int smoth_divfree_con[3];/* Address Offset: 0x0cc0 */
860265e00cSElaine Zhang 	unsigned int fracdiv_high_con[4];/* Address Offset: 0x0ccc */
870265e00cSElaine Zhang 	unsigned int reserved8[32137];/* Address Offset: 0x0c38 */
880265e00cSElaine Zhang 	unsigned int pmuclksel_con[22]; /* Address Offset: 0x20300 */
890265e00cSElaine Zhang 	unsigned int reserved9[298];/* Address Offset: 0x20358 */
900265e00cSElaine Zhang 	unsigned int pmuclkgate_con[8]; /* Address Offset: 0x20800 */
910265e00cSElaine Zhang 	unsigned int reserved10[32440];/* Address Offset: 0x20820 */
920265e00cSElaine Zhang 	unsigned int litclksel_con[4]; /* Address Offset: 0x40300 */
930265e00cSElaine Zhang };
940265e00cSElaine Zhang 
950265e00cSElaine Zhang check_member(rk3576_cru, mode_con00, 0x280);
960265e00cSElaine Zhang check_member(rk3576_cru, pmuclksel_con[1], 0x20304);
970265e00cSElaine Zhang 
980265e00cSElaine Zhang struct pll_rate_table {
990265e00cSElaine Zhang 	unsigned long rate;
1000265e00cSElaine Zhang 	unsigned int m;
1010265e00cSElaine Zhang 	unsigned int p;
1020265e00cSElaine Zhang 	unsigned int s;
1030265e00cSElaine Zhang 	unsigned int k;
1040265e00cSElaine Zhang };
1050265e00cSElaine Zhang 
1060265e00cSElaine Zhang #define RK3576_PHP_CRU_BASE		0x8000
1070265e00cSElaine Zhang #define RK3576_PMU_CRU_BASE		0x20000
1080265e00cSElaine Zhang #define RK3576_BIGCORE_CRU_BASE		0x38000
1090265e00cSElaine Zhang #define RK3576_LITCORE_CRU_BASE		0x40000
1100265e00cSElaine Zhang #define RK3576_CCI_CRU_BASE		0x48000
1110265e00cSElaine Zhang #define RK3576_CRU_BASE			0x27200000
1120265e00cSElaine Zhang #define RK3576_SCRU_BASE		0x27214000
1130265e00cSElaine Zhang 
114d38d4a65SFinley Xiao #define RK3576_BIGCORE_GRF_BASE		0x2600C000
115d38d4a65SFinley Xiao #define RK3576_LITCORE_GRF_BASE		0x2600E000
116d38d4a65SFinley Xiao #define RK3576_CCI_GRF_BASE		0x26010000
117d38d4a65SFinley Xiao 
1180265e00cSElaine Zhang #define RK3576_PLL_CON(x)		((x) * 0x4)
1190265e00cSElaine Zhang #define RK3576_MODE_CON0		0x280
1200265e00cSElaine Zhang #define RK3576_BPLL_MODE_CON0		(RK3576_BIGCORE_CRU_BASE + 0x280)
1210265e00cSElaine Zhang #define RK3576_LPLL_MODE_CON0		(RK3576_LITCORE_CRU_BASE + 0x280)
1220265e00cSElaine Zhang #define RK3576_PPLL_MODE_CON0		(RK3576_PHP_CRU_BASE + 0x280)
1230265e00cSElaine Zhang #define RK3576_CLKSEL_CON(x)		((x) * 0x4 + 0x300)
1240265e00cSElaine Zhang #define RK3576_CLKGATE_CON(x)		((x) * 0x4 + 0x800)
1250265e00cSElaine Zhang #define RK3576_SOFTRST_CON(x)		((x) * 0x4 + 0xa00)
1260265e00cSElaine Zhang #define RK3576_GLB_CNT_TH		0xc00
1270265e00cSElaine Zhang #define RK3576_GLB_SRST_FST		0xc08
1280265e00cSElaine Zhang #define RK3576_GLB_SRST_SND		0xc0c
1290265e00cSElaine Zhang #define RK3576_GLB_RST_CON		0xc10
1300265e00cSElaine Zhang #define RK3576_GLB_RST_ST		0xc04
1310265e00cSElaine Zhang #define RK3576_SDIO_CON0		0xC24
1320265e00cSElaine Zhang #define RK3576_SDIO_CON1		0xC28
1330265e00cSElaine Zhang #define RK3576_SDMMC_CON0		0xC30
1340265e00cSElaine Zhang #define RK3576_SDMMC_CON1		0xC34
1350265e00cSElaine Zhang 
1360265e00cSElaine Zhang #define RK3576_PHP_CLKSEL_CON(x)	((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x300)
1370265e00cSElaine Zhang #define RK3576_PHP_CLKGATE_CON(x)	((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x800)
1380265e00cSElaine Zhang #define RK3576_PHP_SOFTRST_CON(x)	((x) * 0x4 + RK3576_PHP_CRU_BASE + 0xa00)
1390265e00cSElaine Zhang 
1400265e00cSElaine Zhang #define RK3576_PMU_PLL_CON(x)		((x) * 0x4 + RK3576_PHP_CRU_BASE)
1410265e00cSElaine Zhang #define RK3576_PMU_CLKSEL_CON(x)	((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x300)
1420265e00cSElaine Zhang #define RK3576_PMU_CLKGATE_CON(x)	((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x800)
1430265e00cSElaine Zhang #define RK3576_PMU_SOFTRST_CON(x)	((x) * 0x4 + RK3576_PMU_CRU_BASE + 0xa00)
1440265e00cSElaine Zhang 
1450265e00cSElaine Zhang #define RK3576_CCI_CLKSEL_CON(x)	((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x300)
1460265e00cSElaine Zhang #define RK3576_CCI_CLKGATE_CON(x)	((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x800)
1470265e00cSElaine Zhang #define RK3576_CCI_SOFTRST_CON(x)	((x) * 0x4 + RK3576_CCI_CRU_BASE + 0xa00)
1480265e00cSElaine Zhang 
1490265e00cSElaine Zhang #define RK3576_BPLL_CON(x)		((x) * 0x4 + RK3576_BIGCORE_CRU_BASE)
1500265e00cSElaine Zhang #define RK3576_BIGCORE_CLKSEL_CON(x)	((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x300)
1510265e00cSElaine Zhang #define RK3576_BIGCORE_CLKGATE_CON(x)	((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x800)
1520265e00cSElaine Zhang #define RK3576_BIGCORE_SOFTRST_CON(x)	((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0xa00)
1530265e00cSElaine Zhang #define RK3576_LPLL_CON(x)		((x) * 0x4 + RK3576_CCI_CRU_BASE)
1540265e00cSElaine Zhang #define RK3576_LITCORE_CLKSEL_CON(x)	((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x300)
1550265e00cSElaine Zhang #define RK3576_LITCORE_CLKGATE_CON(x)	((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x800)
1560265e00cSElaine Zhang #define RK3576_LITCORE_SOFTRST_CON(x)	((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0xa00)
1570265e00cSElaine Zhang 
1580265e00cSElaine Zhang enum {
1590265e00cSElaine Zhang 	/* CRU_CLK_SEL8_CON */
1600265e00cSElaine Zhang 	PCLK_TOP_SEL_SHIFT		= 7,
1610265e00cSElaine Zhang 	PCLK_TOP_SEL_MASK		= 3 << PCLK_TOP_SEL_SHIFT,
1620265e00cSElaine Zhang 	PCLK_TOP_SEL_100M		= 0,
1630265e00cSElaine Zhang 	PCLK_TOP_SEL_50M,
1640265e00cSElaine Zhang 	PCLK_TOP_SEL_OSC,
1650265e00cSElaine Zhang 
1660265e00cSElaine Zhang 	/* CRU_CLK_SEL9_CON */
1670265e00cSElaine Zhang 	ACLK_TOP_SEL_SHIFT		= 5,
1680265e00cSElaine Zhang 	ACLK_TOP_SEL_MASK		= 3 << ACLK_TOP_SEL_SHIFT,
1690265e00cSElaine Zhang 	ACLK_TOP_SEL_GPLL		= 0,
1700265e00cSElaine Zhang 	ACLK_TOP_SEL_CPLL,
1710265e00cSElaine Zhang 	ACLK_TOP_SEL_AUPLL,
1720265e00cSElaine Zhang 	ACLK_TOP_DIV_SHIFT		= 0,
1730265e00cSElaine Zhang 	ACLK_TOP_DIV_MASK		= 0x1f << ACLK_TOP_DIV_SHIFT,
1740265e00cSElaine Zhang 
1750265e00cSElaine Zhang 	/* CRU_CLK_SEL10_CON */
1760265e00cSElaine Zhang 	ACLK_TOP_MID_SEL_SHIFT		= 5,
1770265e00cSElaine Zhang 	ACLK_TOP_MID_SEL_MASK		= 1 << ACLK_TOP_MID_SEL_SHIFT,
1780265e00cSElaine Zhang 	ACLK_TOP_MID_SEL_GPLL		= 0,
1790265e00cSElaine Zhang 	ACLK_TOP_MID_SEL_CPLL,
1800265e00cSElaine Zhang 	ACLK_TOP_MID_DIV_SHIFT		= 0,
1810265e00cSElaine Zhang 	ACLK_TOP_MID_DIV_MASK		= 0x1f << ACLK_TOP_MID_DIV_SHIFT,
1820265e00cSElaine Zhang 
1830265e00cSElaine Zhang 	/* CRU_CLK_SEL19_CON */
1840265e00cSElaine Zhang 	HCLK_TOP_SEL_SHIFT		= 2,
1850265e00cSElaine Zhang 	HCLK_TOP_SEL_MASK		= 3 << HCLK_TOP_SEL_SHIFT,
1860265e00cSElaine Zhang 	HCLK_TOP_SEL_200M		= 0,
1870265e00cSElaine Zhang 	HCLK_TOP_SEL_100M,
1880265e00cSElaine Zhang 	HCLK_TOP_SEL_50M,
1890265e00cSElaine Zhang 	HCLK_TOP_SEL_OSC,
1900265e00cSElaine Zhang 
1910265e00cSElaine Zhang 	/* CRU_CLK_SEL25_CON */
1920265e00cSElaine Zhang 	CLK_UART_FRAC_NUMERATOR_SHIFT	= 16,
1930265e00cSElaine Zhang 	CLK_UART_FRAC_NUMERATOR_MASK	= 0xffff << 16,
1940265e00cSElaine Zhang 	CLK_UART_FRAC_DENOMINATOR_SHIFT	= 0,
1950265e00cSElaine Zhang 	CLK_UART_FRAC_DENOMINATOR_MASK	= 0xffff,
1960265e00cSElaine Zhang 
1970265e00cSElaine Zhang 	/* CRU_CLK_SEL26_CON */
1980265e00cSElaine Zhang 	CLK_UART_SRC_SEL_SHIFT		= 0,
1990265e00cSElaine Zhang 	CLK_UART_SRC_SEL_MASK		= 0x3 << CLK_UART_SRC_SEL_SHIFT,
2000265e00cSElaine Zhang 	CLK_UART_SRC_SEL_GPLL		= 0,
2010265e00cSElaine Zhang 	CLK_UART_SRC_SEL_CPLL,
2020265e00cSElaine Zhang 	CLK_UART_SRC_SEL_AUPLL,
2030265e00cSElaine Zhang 	CLK_UART_SRC_SEL_OSC,
2040265e00cSElaine Zhang 
2050265e00cSElaine Zhang 	/* CRU_CLK_SEL27_CON */
2060265e00cSElaine Zhang 	CLK_UART1_SRC_SEL_SHIFT		= 13,
2070265e00cSElaine Zhang 	CLK_UART1_SRC_SEL_MASK		= 0x7 << CLK_UART1_SRC_SEL_SHIFT,
2080265e00cSElaine Zhang 	CLK_UART1_SRC_DIV_SHIFT		= 5,
2090265e00cSElaine Zhang 	CLK_UART1_SRC_DIV_MASK		= 0xff << CLK_UART1_SRC_DIV_SHIFT,
2100265e00cSElaine Zhang 
2110265e00cSElaine Zhang 	/* CRU_CLK_SEL30_CON */
2120265e00cSElaine Zhang 	CLK_GMAC0_125M_DIV_SHIFT	= 10,
2130265e00cSElaine Zhang 	CLK_GMAC0_125M_DIV_MASK		= 0x1f << CLK_GMAC0_125M_DIV_SHIFT,
2140265e00cSElaine Zhang 
2150265e00cSElaine Zhang 	/* CRU_CLK_SEL31_CON */
2160265e00cSElaine Zhang 	CLK_GMAC1_125M_DIV_SHIFT	= 0,
2170265e00cSElaine Zhang 	CLK_GMAC1_125M_DIV_MASK		= 0x1f << CLK_GMAC1_125M_DIV_SHIFT,
2180265e00cSElaine Zhang 
219cdb92760SElaine Zhang 	/* CRU_CLK_SEL33_CON */
220cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_SHIFT	= 8,
221cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_MASK	= 7 << REF_CLK0_OUT_PLL_SEL_SHIFT,
222cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_GPLL	= 0,
223cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_CPLL,
224cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_SPLL,
225cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_AUPLL,
226cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_LPLL,
227cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_SEL_OSC,
228cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_DIV_SHIFT	= 0,
229cdb92760SElaine Zhang 	REF_CLK0_OUT_PLL_DIV_MASK	= 0xff << REF_CLK0_OUT_PLL_DIV_SHIFT,
230cdb92760SElaine Zhang 
2310265e00cSElaine Zhang 	/* CRU_CLK_SEL55_CON */
2320265e00cSElaine Zhang 	ACLK_BUS_ROOT_SEL_SHIFT		= 9,
2330265e00cSElaine Zhang 	ACLK_BUS_ROOT_SEL_MASK		= 1 << ACLK_BUS_ROOT_SEL_SHIFT,
2340265e00cSElaine Zhang 	ACLK_BUS_ROOT_SEL_GPLL		= 0,
2350265e00cSElaine Zhang 	ACLK_BUS_ROOT_SEL_CPLL,
2360265e00cSElaine Zhang 	ACLK_BUS_ROOT_DIV_SHIFT		= 4,
2370265e00cSElaine Zhang 	ACLK_BUS_ROOT_DIV_MASK		= 0x1f << ACLK_BUS_ROOT_DIV_SHIFT,
2380265e00cSElaine Zhang 	PCLK_BUS_ROOT_SEL_SHIFT		= 2,
2390265e00cSElaine Zhang 	PCLK_BUS_ROOT_SEL_MASK		= 3 << PCLK_BUS_ROOT_SEL_SHIFT,
2400265e00cSElaine Zhang 	PCLK_BUS_ROOT_SEL_100M		= 0,
2410265e00cSElaine Zhang 	PCLK_BUS_ROOT_SEL_50M,
2420265e00cSElaine Zhang 	PCLK_BUS_ROOT_SEL_OSC,
2430265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_SHIFT		= 0,
2440265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_MASK		= 3 << HCLK_BUS_ROOT_SEL_SHIFT,
2450265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_200M		= 0,
2460265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_100M,
2470265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_50M,
2480265e00cSElaine Zhang 	HCLK_BUS_ROOT_SEL_OSC,
2490265e00cSElaine Zhang 
2500265e00cSElaine Zhang 	/* CRU_CLK_SEL57_CON */
2510265e00cSElaine Zhang 	CLK_I2C8_SEL_SHIFT		= 14,
2520265e00cSElaine Zhang 	CLK_I2C8_SEL_MASK		= 3 << CLK_I2C8_SEL_SHIFT,
2530265e00cSElaine Zhang 	CLK_I2C7_SEL_SHIFT		= 12,
2540265e00cSElaine Zhang 	CLK_I2C7_SEL_MASK		= 3 << CLK_I2C7_SEL_SHIFT,
2550265e00cSElaine Zhang 	CLK_I2C6_SEL_SHIFT		= 10,
2560265e00cSElaine Zhang 	CLK_I2C6_SEL_MASK		= 3 << CLK_I2C6_SEL_SHIFT,
2570265e00cSElaine Zhang 	CLK_I2C5_SEL_SHIFT		= 8,
2580265e00cSElaine Zhang 	CLK_I2C5_SEL_MASK		= 3 << CLK_I2C5_SEL_SHIFT,
2590265e00cSElaine Zhang 	CLK_I2C4_SEL_SHIFT		= 6,
2600265e00cSElaine Zhang 	CLK_I2C4_SEL_MASK		= 3 << CLK_I2C4_SEL_SHIFT,
2610265e00cSElaine Zhang 	CLK_I2C3_SEL_SHIFT		= 4,
2620265e00cSElaine Zhang 	CLK_I2C3_SEL_MASK		= 3 << CLK_I2C3_SEL_SHIFT,
2630265e00cSElaine Zhang 	CLK_I2C2_SEL_SHIFT		= 2,
2640265e00cSElaine Zhang 	CLK_I2C2_SEL_MASK		= 3 << CLK_I2C2_SEL_SHIFT,
2650265e00cSElaine Zhang 	CLK_I2C1_SEL_SHIFT		= 0,
2660265e00cSElaine Zhang 	CLK_I2C1_SEL_MASK		= 3 << CLK_I2C1_SEL_SHIFT,
2670265e00cSElaine Zhang 	CLK_I2C_SEL_200M		= 0,
2680265e00cSElaine Zhang 	CLK_I2C_SEL_100M,
2690265e00cSElaine Zhang 	CLK_I2C_SEL_50M,
2700265e00cSElaine Zhang 	CLK_I2C_SEL_OSC,
2710265e00cSElaine Zhang 
2720265e00cSElaine Zhang 	/* CRU_CLK_SEL58_CON */
2730265e00cSElaine Zhang 	CLK_SARADC_SEL_SHIFT		= 12,
2740265e00cSElaine Zhang 	CLK_SARADC_SEL_MASK		= 0x1 << CLK_SARADC_SEL_SHIFT,
2750265e00cSElaine Zhang 	CLK_SARADC_SEL_GPLL		= 0,
2760265e00cSElaine Zhang 	CLK_SARADC_SEL_OSC,
2770265e00cSElaine Zhang 	CLK_SARADC_DIV_SHIFT		= 4,
2780265e00cSElaine Zhang 	CLK_SARADC_DIV_MASK		= 0xff << CLK_SARADC_DIV_SHIFT,
2790265e00cSElaine Zhang 	CLK_I2C9_SEL_SHIFT		= 0,
2800265e00cSElaine Zhang 	CLK_I2C9_SEL_MASK		= 3 << CLK_I2C9_SEL_SHIFT,
2810265e00cSElaine Zhang 
2820265e00cSElaine Zhang 	/* CRU_CLK_SEL59_CON */
2830265e00cSElaine Zhang 	CLK_TSADC_DIV_SHIFT		= 0,
2840265e00cSElaine Zhang 	CLK_TSADC_DIV_MASK		= 0xff << CLK_TSADC_DIV_SHIFT,
2850265e00cSElaine Zhang 
2860265e00cSElaine Zhang 	/* CRU_CLK_SEL60_CON */
2870265e00cSElaine Zhang 	CLK_UART_SEL_SHIFT		= 8,
2880265e00cSElaine Zhang 	CLK_UART_SEL_MASK		= 7 << CLK_UART_SEL_SHIFT,
2890265e00cSElaine Zhang 	CLK_UART_SEL_GPLL		= 0,
2900265e00cSElaine Zhang 	CLK_UART_SEL_CPLL,
2910265e00cSElaine Zhang 	CLK_UART_SEL_AUPLL,
2920265e00cSElaine Zhang 	CLK_UART_SEL_OSC,
2930265e00cSElaine Zhang 	CLK_UART_SEL_FRAC0,
2940265e00cSElaine Zhang 	CLK_UART_SEL_FRAC1,
2950265e00cSElaine Zhang 	CLK_UART_SEL_FRAC2,
2960265e00cSElaine Zhang 	CLK_UART_DIV_SHIFT		= 0,
2970265e00cSElaine Zhang 	CLK_UART_DIV_MASK		= 0xff << CLK_UART_DIV_SHIFT,
2980265e00cSElaine Zhang 
2990265e00cSElaine Zhang 	/* CRU_CLK_SEL70_CON */
3000265e00cSElaine Zhang 	CLK_SPI0_SEL_SHIFT		= 13,
3010265e00cSElaine Zhang 	CLK_SPI0_SEL_MASK		= 3 << CLK_SPI0_SEL_SHIFT,
3020265e00cSElaine Zhang 	CLK_SPI_SEL_200M		= 0,
3030265e00cSElaine Zhang 	CLK_SPI_SEL_100M,
3040265e00cSElaine Zhang 	CLK_SPI_SEL_50M,
3050265e00cSElaine Zhang 	CLK_SPI_SEL_OSC,
3060265e00cSElaine Zhang 
3070265e00cSElaine Zhang 	/* CRU_CLK_SEL71_CON */
3080265e00cSElaine Zhang 	CLK_PWM1_SEL_SHIFT		= 8,
3090265e00cSElaine Zhang 	CLK_PWM1_SEL_MASK		= 3 << CLK_PWM1_SEL_SHIFT,
3100265e00cSElaine Zhang 	CLK_SPI4_SEL_SHIFT		= 6,
3110265e00cSElaine Zhang 	CLK_SPI4_SEL_MASK		= 3 << CLK_SPI4_SEL_SHIFT,
3120265e00cSElaine Zhang 	CLK_SPI3_SEL_SHIFT		= 4,
3130265e00cSElaine Zhang 	CLK_SPI3_SEL_MASK		= 3 << CLK_SPI3_SEL_SHIFT,
3140265e00cSElaine Zhang 	CLK_SPI2_SEL_SHIFT		= 2,
3150265e00cSElaine Zhang 	CLK_SPI2_SEL_MASK		= 3 << CLK_SPI2_SEL_SHIFT,
3160265e00cSElaine Zhang 	CLK_SPI1_SEL_SHIFT		= 0,
3170265e00cSElaine Zhang 	CLK_SPI1_SEL_MASK		= 3 << CLK_SPI1_SEL_SHIFT,
3180265e00cSElaine Zhang 	CLK_PWM_SEL_100M		= 0,
3190265e00cSElaine Zhang 	CLK_PWM_SEL_50M,
3200265e00cSElaine Zhang 	CLK_PWM_SEL_OSC,
3210265e00cSElaine Zhang 
322431b7b81SElaine Zhang 	/* CRU_CLK_SEL72_CON */
323431b7b81SElaine Zhang 	DCLK_DECOM_SEL_SHIFT		= 5,
324431b7b81SElaine Zhang 	DCLK_DECOM_SEL_MASK		= 1 << DCLK_DECOM_SEL_SHIFT,
325431b7b81SElaine Zhang 	DCLK_DECOM_SEL_GPLL		= 0,
326431b7b81SElaine Zhang 	DCLK_DECOM_SEL_SPLL,
327431b7b81SElaine Zhang 	DCLK_DECOM_DIV_SHIFT		= 0,
328431b7b81SElaine Zhang 	DCLK_DECOM_DIV_MASK		= 0x1f << DCLK_DECOM_DIV_SHIFT,
329431b7b81SElaine Zhang 
3300265e00cSElaine Zhang 	/* CRU_CLK_SEL74_CON */
3310265e00cSElaine Zhang 	CLK_PWM2_SEL_SHIFT		= 6,
3320265e00cSElaine Zhang 	CLK_PWM2_SEL_MASK		= 3 << CLK_PWM2_SEL_SHIFT,
3330265e00cSElaine Zhang 
3340265e00cSElaine Zhang 	/* CRU_CLK_SEL89_CON */
3350265e00cSElaine Zhang 	CCLK_EMMC_SEL_SHIFT		= 14,
3360265e00cSElaine Zhang 	CCLK_EMMC_SEL_MASK		= 3 << CCLK_EMMC_SEL_SHIFT,
3370265e00cSElaine Zhang 	CCLK_EMMC_SEL_GPLL		= 0,
3380265e00cSElaine Zhang 	CCLK_EMMC_SEL_CPLL,
3390265e00cSElaine Zhang 	CCLK_EMMC_SEL_OSC,
3400265e00cSElaine Zhang 	CCLK_EMMC_DIV_SHIFT		= 8,
3410265e00cSElaine Zhang 	CCLK_EMMC_DIV_MASK		= 0x3f << CCLK_EMMC_DIV_SHIFT,
3420265e00cSElaine Zhang 	SCLK_FSPI_SEL_SHIFT		= 6,
3430265e00cSElaine Zhang 	SCLK_FSPI_SEL_MASK		= 3 << SCLK_FSPI_SEL_SHIFT,
3440265e00cSElaine Zhang 	SCLK_FSPI_SEL_GPLL		= 0,
3450265e00cSElaine Zhang 	SCLK_FSPI_SEL_CPLL,
3460265e00cSElaine Zhang 	SCLK_FSPI_SEL_OSC,
3470265e00cSElaine Zhang 	SCLK_FSPI_DIV_SHIFT		= 0,
3480265e00cSElaine Zhang 	SCLK_FSPI_DIV_MASK		= 0x3f << SCLK_FSPI_DIV_SHIFT,
3490265e00cSElaine Zhang 
3500265e00cSElaine Zhang 	/* CRU_CLK_SEL90_CON */
3510265e00cSElaine Zhang 	BCLK_EMMC_SEL_SHIFT		= 0,
3520265e00cSElaine Zhang 	BCLK_EMMC_SEL_MASK		= 3 << BCLK_EMMC_SEL_SHIFT,
3530265e00cSElaine Zhang 	BCLK_EMMC_SEL_200M		= 0,
3540265e00cSElaine Zhang 	BCLK_EMMC_SEL_100M,
3550265e00cSElaine Zhang 	BCLK_EMMC_SEL_50M,
3560265e00cSElaine Zhang 	BCLK_EMMC_SEL_OSC,
3570265e00cSElaine Zhang 
3580265e00cSElaine Zhang 	/* CRU_CLK_SEL104_CON */
3590265e00cSElaine Zhang 	CLK_GMAC1_PTP_SEL_SHIFT		= 13,
3600265e00cSElaine Zhang 	CLK_GMAC1_PTP_SEL_MASK		= 3 << CLK_GMAC1_PTP_SEL_SHIFT,
3610265e00cSElaine Zhang 	CLK_GMAC1_PTP_SEL_GPLL		= 0,
3620265e00cSElaine Zhang 	CLK_GMAC1_PTP_SEL_CPLL,
3630265e00cSElaine Zhang 	CLK_GMAC1_PTP_SEL_REFIN,
3640265e00cSElaine Zhang 	CLK_GMAC1_PTP_DIV_SHIFT		= 8,
3650265e00cSElaine Zhang 	CLK_GMAC1_PTP_DIV_MASK		= 0x1f << CLK_GMAC1_PTP_DIV_SHIFT,
3660265e00cSElaine Zhang 	CCLK_SDIO_SRC_SEL_SHIFT		= 6,
3670265e00cSElaine Zhang 	CCLK_SDIO_SRC_SEL_MASK		= 3 << CCLK_SDIO_SRC_SEL_SHIFT,
3680265e00cSElaine Zhang 	CCLK_SDIO_SRC_SEL_GPLL		= 0,
3690265e00cSElaine Zhang 	CCLK_SDIO_SRC_SEL_CPLL,
3700265e00cSElaine Zhang 	CCLK_SDIO_SRC_SEL_OSC,
3710265e00cSElaine Zhang 	CCLK_SDIO_SRC_DIV_SHIFT		= 0,
3720265e00cSElaine Zhang 	CCLK_SDIO_SRC_DIV_MASK		= 0x3f << CCLK_SDIO_SRC_DIV_SHIFT,
3730265e00cSElaine Zhang 
3740265e00cSElaine Zhang 	/* CRU_CLK_SEL105_CON */
3750265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_SEL_SHIFT	= 13,
3760265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_SEL_MASK	= 3 << CCLK_SDMMC0_SRC_SEL_SHIFT,
3770265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_SEL_GPLL	= 0,
3780265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_SEL_CPLL,
3790265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_SEL_OSC,
3800265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_DIV_SHIFT	= 7,
3810265e00cSElaine Zhang 	CCLK_SDMMC0_SRC_DIV_MASK	= 0x3f << CCLK_SDMMC0_SRC_DIV_SHIFT,
3820265e00cSElaine Zhang 	CLK_GMAC0_PTP_SEL_SHIFT		= 5,
3830265e00cSElaine Zhang 	CLK_GMAC0_PTP_SEL_MASK		= 3 << CLK_GMAC0_PTP_SEL_SHIFT,
3840265e00cSElaine Zhang 	CLK_GMAC0_PTP_SEL_GPLL		= 0,
3850265e00cSElaine Zhang 	CLK_GMAC0_PTP_SEL_CPLL,
3860265e00cSElaine Zhang 	CLK_GMAC0_PTP_SEL_REFIN,
3870265e00cSElaine Zhang 	CLK_GMAC0_PTP_DIV_SHIFT		= 0,
3880265e00cSElaine Zhang 	CLK_GMAC0_PTP_DIV_MASK		= 0x1f << CLK_GMAC0_PTP_DIV_SHIFT,
3890265e00cSElaine Zhang 
3900265e00cSElaine Zhang 	/* CRU_CLK_SEL123_CON */
3910265e00cSElaine Zhang 	DCLK_EBC_SEL_SHIFT		= 12,
3920265e00cSElaine Zhang 	DCLK_EBC_SEL_MASK		= 7 << DCLK_EBC_SEL_SHIFT,
3930265e00cSElaine Zhang 	DCLK_EBC_SEL_GPLL		= 0,
3940265e00cSElaine Zhang 	DCLK_EBC_SEL_CPLL,
3950265e00cSElaine Zhang 	DCLK_EBC_SEL_VPLL,
3960265e00cSElaine Zhang 	DCLK_EBC_SEL_AUPLL,
3970265e00cSElaine Zhang 	DCLK_EBC_SEL_LPLL,
3980265e00cSElaine Zhang 	DCLK_EBC_SEL_FRAC_SRC,
3990265e00cSElaine Zhang 	DCLK_EBC_SEL_OSC,
4000265e00cSElaine Zhang 	DCLK_EBC_DIV_SHIFT		= 3,
4010265e00cSElaine Zhang 	DCLK_EBC_DIV_MASK		= 0x1ff << DCLK_EBC_DIV_SHIFT,
4020265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_SHIFT	= 0,
4030265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_MASK	= 7 << DCLK_EBC_FRAC_SRC_SEL_SHIFT,
4040265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_GPLL	= 0,
4050265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_CPLL,
4060265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_VPLL,
4070265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_AUPLL,
4080265e00cSElaine Zhang 	DCLK_EBC_FRAC_SRC_SEL_OSC,
4090265e00cSElaine Zhang 
4100265e00cSElaine Zhang 	/* CRU_CLK_SEL144_CON */
4110265e00cSElaine Zhang 	PCLK_VOP_ROOT_SEL_SHIFT		= 12,
4120265e00cSElaine Zhang 	PCLK_VOP_ROOT_SEL_MASK		= 3 << PCLK_VOP_ROOT_SEL_SHIFT,
4130265e00cSElaine Zhang 	PCLK_VOP_ROOT_SEL_100M		= 0,
4140265e00cSElaine Zhang 	PCLK_VOP_ROOT_SEL_50M,
4150265e00cSElaine Zhang 	PCLK_VOP_ROOT_SEL_OSC,
4160265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_SHIFT		= 10,
4170265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_MASK		= 3 << HCLK_VOP_ROOT_SEL_SHIFT,
4180265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_200M		= 0,
4190265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_100M,
4200265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_50M,
4210265e00cSElaine Zhang 	HCLK_VOP_ROOT_SEL_OSC,
4220265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_SHIFT		= 5,
4230265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_MASK		= 7 << ACLK_VOP_ROOT_SEL_SHIFT,
4240265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_GPLL		= 0,
4250265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_CPLL,
4260265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_AUPLL,
4270265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_SPLL,
4280265e00cSElaine Zhang 	ACLK_VOP_ROOT_SEL_LPLL,
4290265e00cSElaine Zhang 	ACLK_VOP_ROOT_DIV_SHIFT		= 0,
4300265e00cSElaine Zhang 	ACLK_VOP_ROOT_DIV_MASK		= 0x1f << ACLK_VOP_ROOT_DIV_SHIFT,
4310265e00cSElaine Zhang 
4320265e00cSElaine Zhang 	/* CRU_CLK_SEL145_CON */
4330265e00cSElaine Zhang 	DCLK0_VOP_SRC_SEL_SHIFT		= 8,
4340265e00cSElaine Zhang 	DCLK0_VOP_SRC_SEL_MASK		= 7 << DCLK0_VOP_SRC_SEL_SHIFT,
4350265e00cSElaine Zhang 	DCLK_VOP_SRC_SEL_GPLL		= 0,
4360265e00cSElaine Zhang 	DCLK_VOP_SRC_SEL_CPLL,
4370265e00cSElaine Zhang 	DCLK_VOP_SRC_SEL_VPLL,
4380265e00cSElaine Zhang 	DCLK_VOP_SRC_SEL_BPLL,
4390265e00cSElaine Zhang 	DCLK_VOP_SRC_SEL_LPLL,
4400265e00cSElaine Zhang 	DCLK0_VOP_SRC_DIV_SHIFT		= 0,
4410265e00cSElaine Zhang 	DCLK0_VOP_SRC_DIV_MASK		= 0xff << DCLK0_VOP_SRC_DIV_SHIFT,
4420265e00cSElaine Zhang 
4430265e00cSElaine Zhang 	/* CRU_CLK_SEL147_CON */
4440265e00cSElaine Zhang 	DCLK2_VOP_SEL_SHIFT		= 13,
4450265e00cSElaine Zhang 	DCLK2_VOP_SEL_MASK		= 1 << DCLK2_VOP_SEL_SHIFT,
4460265e00cSElaine Zhang 	DCLK1_VOP_SEL_SHIFT		= 12,
4470265e00cSElaine Zhang 	DCLK1_VOP_SEL_MASK		= 1 << DCLK1_VOP_SEL_SHIFT,
4480265e00cSElaine Zhang 	DCLK0_VOP_SEL_SHIFT		= 11,
4490265e00cSElaine Zhang 	DCLK0_VOP_SEL_MASK		= 1 << DCLK0_VOP_SEL_SHIFT,
4500265e00cSElaine Zhang 
4510265e00cSElaine Zhang 	/* CRU_CLK_SEL149_CON */
4520265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_SHIFT		= 5,
4530265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_MASK		= 3 << ACLK_VO0_ROOT_SEL_SHIFT,
4540265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_GPLL		= 0,
4550265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_CPLL,
4560265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_LPLL,
4570265e00cSElaine Zhang 	ACLK_VO0_ROOT_SEL_BPLL,
4580265e00cSElaine Zhang 	ACLK_VO0_ROOT_DIV_SHIFT		= 0,
4590265e00cSElaine Zhang 	ACLK_VO0_ROOT_DIV_MASK		= 0x1f << ACLK_VO0_ROOT_DIV_SHIFT,
4600265e00cSElaine Zhang 
4610265e00cSElaine Zhang 	/* CRU_CLK_SEL151_CON */
4620265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_SHIFT		= 7,
4630265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_MASK		= 7 << CLK_DSIHOST0_SEL_SHIFT,
4640265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_GPLL		= 0,
4650265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_CPLL,
4660265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_SPLL,
4670265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_VPLL,
4680265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_BPLL,
4690265e00cSElaine Zhang 	CLK_DSIHOST0_SEL_LPLL,
4700265e00cSElaine Zhang 	CLK_DSIHOST0_DIV_SHIFT		= 0,
4710265e00cSElaine Zhang 	CLK_DSIHOST0_DIV_MASK		= 0x7f << CLK_DSIHOST0_DIV_SHIFT,
4720265e00cSElaine Zhang 
4730265e00cSElaine Zhang 	/* PMUCRU_CLK_SEL5_CON */
4740265e00cSElaine Zhang 	CLK_PMU1PWM_SEL_SHIFT		= 2,
4750265e00cSElaine Zhang 	CLK_PMU1PWM_SEL_MASK		= 3 << CLK_PMU1PWM_SEL_SHIFT,
4760265e00cSElaine Zhang 
4770265e00cSElaine Zhang 	/* PMUCRU_CLK_SEL6_CON */
4780265e00cSElaine Zhang 	CLK_I2C0_SEL_SHIFT		= 7,
4790265e00cSElaine Zhang 	CLK_I2C0_SEL_MASK		= 3 << CLK_I2C0_SEL_SHIFT,
4800265e00cSElaine Zhang 
4810265e00cSElaine Zhang 	/* PMUCRU_CLK_SEL8_CON */
4820265e00cSElaine Zhang 	CLK_UART1_SEL_SHIFT		= 0,
4830265e00cSElaine Zhang 	CLK_UART1_SEL_MASK		= 1 << CLK_UART1_SEL_SHIFT,
4840265e00cSElaine Zhang 	CLK_UART1_SEL_TOP		= 0,
4850265e00cSElaine Zhang 	CLK_UART1_SEL_OSC,
4860265e00cSElaine Zhang 
4870265e00cSElaine Zhang 	/* LITCRU_CLK_SEL0_CON */
4880265e00cSElaine Zhang 	CLK_LITCORE_SEL_SHIFT		= 12,
4890265e00cSElaine Zhang 	CLK_LITCORE_SEL_MASK		= 3 << CLK_LITCORE_SEL_SHIFT,
4900265e00cSElaine Zhang 	CLK_LITCORE_SEL_LPLL		= 0,
4910265e00cSElaine Zhang 	CLK_LITCORE_SEL_GPLL,
4920265e00cSElaine Zhang 	CLK_LITCORE_SEL_PVTPLL,
4930265e00cSElaine Zhang 	CLK_LITCORE_DIV_SHIFT		= 7,
4940265e00cSElaine Zhang 	CLK_LITCORE_DIV_MASK		= 0x1f << CLK_LITCORE_DIV_SHIFT,
4950265e00cSElaine Zhang 
496*5c6e0812SElaine Zhang 	/* BIGCRU_CLK_SEL1_CON */
497*5c6e0812SElaine Zhang 	CLK_BIGCORE_SEL_SHIFT		= 12,
498*5c6e0812SElaine Zhang 	CLK_BIGCORE_SEL_MASK		= 3 << CLK_BIGCORE_SEL_SHIFT,
499*5c6e0812SElaine Zhang 	CLK_BIGCORE_SEL_LPLL		= 0,
500*5c6e0812SElaine Zhang 	CLK_BIGCORE_SEL_GPLL,
501*5c6e0812SElaine Zhang 	CLK_BIGCORE_SEL_PVTPLL,
502*5c6e0812SElaine Zhang 	CLK_BIGCORE_DIV_SHIFT		= 7,
503*5c6e0812SElaine Zhang 	CLK_BIGCORE_DIV_MASK		= 0x1f << CLK_BIGCORE_DIV_SHIFT,
5040265e00cSElaine Zhang };
5050265e00cSElaine Zhang #endif
506