xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/cru_rk3588.h (revision 0265e00cde74339f5cc1002fcda53b7424d41c33)
128d0997cSElaine Zhang /* SPDX-License-Identifier: GPL-2.0 */
228d0997cSElaine Zhang /*
328d0997cSElaine Zhang  * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
428d0997cSElaine Zhang  * Author: Elaine Zhang <zhangqing@rock-chips.com>
528d0997cSElaine Zhang  */
628d0997cSElaine Zhang 
728d0997cSElaine Zhang #ifndef _ASM_ARCH_CRU_RK3588_H
828d0997cSElaine Zhang #define _ASM_ARCH_CRU_RK3588_H
928d0997cSElaine Zhang 
1028d0997cSElaine Zhang #define MHz		1000000
1128d0997cSElaine Zhang #define KHz		1000
1228d0997cSElaine Zhang #define OSC_HZ		(24 * MHz)
1328d0997cSElaine Zhang 
14056cae5cSFinley Xiao #define CPU_PVTPLL_HZ	(1008 * MHz)
15056cae5cSFinley Xiao #define LPLL_HZ		(816 * MHz)
1628d0997cSElaine Zhang #define GPLL_HZ		(1188 * MHz)
1728d0997cSElaine Zhang #define CPLL_HZ		(1500 * MHz)
1828d0997cSElaine Zhang #define NPLL_HZ         (850 * MHz)
193a7297c2SKever Yang #define PPLL_HZ		(1100 * MHz)
2028d0997cSElaine Zhang 
2128d0997cSElaine Zhang /* RK3588 pll id */
2228d0997cSElaine Zhang enum rk3588_pll_id {
2328d0997cSElaine Zhang 	B0PLL,
2428d0997cSElaine Zhang 	B1PLL,
2528d0997cSElaine Zhang 	LPLL,
2628d0997cSElaine Zhang 	CPLL,
2728d0997cSElaine Zhang 	GPLL,
2828d0997cSElaine Zhang 	NPLL,
2928d0997cSElaine Zhang 	V0PLL,
3028d0997cSElaine Zhang 	AUPLL,
3128d0997cSElaine Zhang 	PPLL,
3228d0997cSElaine Zhang 	PLL_COUNT,
3328d0997cSElaine Zhang };
3428d0997cSElaine Zhang 
3528d0997cSElaine Zhang struct rk3588_clk_info {
3628d0997cSElaine Zhang 	unsigned long id;
3728d0997cSElaine Zhang 	char *name;
3828d0997cSElaine Zhang 	bool is_cru;
3928d0997cSElaine Zhang };
4028d0997cSElaine Zhang 
4128d0997cSElaine Zhang struct rk3588_clk_priv {
4228d0997cSElaine Zhang 	struct rk3588_cru *cru;
4328d0997cSElaine Zhang 	struct rk3588_grf *grf;
4428d0997cSElaine Zhang 	ulong ppll_hz;
4528d0997cSElaine Zhang 	ulong gpll_hz;
4628d0997cSElaine Zhang 	ulong cpll_hz;
4728d0997cSElaine Zhang 	ulong npll_hz;
4828d0997cSElaine Zhang 	ulong v0pll_hz;
49*0265e00cSElaine Zhang 	ulong spll_hz;
5028d0997cSElaine Zhang 	ulong aupll_hz;
5128d0997cSElaine Zhang 	ulong armclk_hz;
5228d0997cSElaine Zhang 	ulong armclk_enter_hz;
5328d0997cSElaine Zhang 	ulong armclk_init_hz;
5428d0997cSElaine Zhang 	bool sync_kernel;
5528d0997cSElaine Zhang 	bool set_armclk_rate;
5628d0997cSElaine Zhang };
5728d0997cSElaine Zhang 
5828d0997cSElaine Zhang struct rk3588_pll {
5928d0997cSElaine Zhang 	unsigned int con0;
6028d0997cSElaine Zhang 	unsigned int con1;
6128d0997cSElaine Zhang 	unsigned int con2;
6228d0997cSElaine Zhang 	unsigned int con3;
6328d0997cSElaine Zhang 	unsigned int con4;
6428d0997cSElaine Zhang 	unsigned int reserved0[3];
6528d0997cSElaine Zhang };
6628d0997cSElaine Zhang 
6728d0997cSElaine Zhang struct rk3588_cru {
6828d0997cSElaine Zhang 	struct rk3588_pll pll[18];
6928d0997cSElaine Zhang 	unsigned int reserved0[16];/* Address Offset: 0x0240 */
7028d0997cSElaine Zhang 	unsigned int mode_con00;/* Address Offset: 0x0280 */
7128d0997cSElaine Zhang 	unsigned int reserved1[31];/* Address Offset: 0x0284 */
7228d0997cSElaine Zhang 	unsigned int clksel_con[178]; /* Address Offset: 0x0300 */
7328d0997cSElaine Zhang 	unsigned int reserved2[142];/* Address Offset: 0x05c8 */
7428d0997cSElaine Zhang 	unsigned int clkgate_con[78];/* Address Offset: 0x0800 */
7528d0997cSElaine Zhang 	unsigned int reserved3[50];/* Address Offset: 0x0938 */
7628d0997cSElaine Zhang 	unsigned int softrst_con[78];/* Address Offset: 0x0400 */
7728d0997cSElaine Zhang 	unsigned int reserved4[50];/* Address Offset: 0x0b38 */
7828d0997cSElaine Zhang 	unsigned int glb_cnt_th;/* Address Offset: 0x0c00 */
7928d0997cSElaine Zhang 	unsigned int glb_rst_st;/* Address Offset: 0x0c04 */
8028d0997cSElaine Zhang 	unsigned int glb_srst_fst;/* Address Offset: 0x0c08 */
8128d0997cSElaine Zhang 	unsigned int glb_srsr_snd; /* Address Offset: 0x0c0c */
8228d0997cSElaine Zhang 	unsigned int glb_rst_con;/* Address Offset: 0x0c10 */
8328d0997cSElaine Zhang 	unsigned int reserved5[4];/* Address Offset: 0x0c14 */
8428d0997cSElaine Zhang 	unsigned int sdio_con[2];/* Address Offset: 0x0c24 */
8528d0997cSElaine Zhang 	unsigned int reserved7;/* Address Offset: 0x0c2c */
8628d0997cSElaine Zhang 	unsigned int sdmmc_con[2];/* Address Offset: 0x0c30 */
8728d0997cSElaine Zhang 	unsigned int reserved8[48562];/* Address Offset: 0x0c38 */
8828d0997cSElaine Zhang 	unsigned int pmuclksel_con[21]; /* Address Offset: 0x0100 */
8928d0997cSElaine Zhang 	unsigned int reserved9[299];/* Address Offset: 0x0c38 */
9028d0997cSElaine Zhang 	unsigned int pmuclkgate_con[9]; /* Address Offset: 0x0100 */
9128d0997cSElaine Zhang };
9228d0997cSElaine Zhang 
9328d0997cSElaine Zhang check_member(rk3588_cru, mode_con00, 0x280);
9428d0997cSElaine Zhang check_member(rk3588_cru, pmuclksel_con[1], 0x30304);
9528d0997cSElaine Zhang 
9628d0997cSElaine Zhang struct pll_rate_table {
9728d0997cSElaine Zhang 	unsigned long rate;
9828d0997cSElaine Zhang 	unsigned int m;
9928d0997cSElaine Zhang 	unsigned int p;
10028d0997cSElaine Zhang 	unsigned int s;
10128d0997cSElaine Zhang 	unsigned int k;
10228d0997cSElaine Zhang };
10328d0997cSElaine Zhang 
10428d0997cSElaine Zhang #define RK3588_PLL_CON(x)		((x) * 0x4)
10528d0997cSElaine Zhang #define RK3588_MODE_CON			0x280
10628d0997cSElaine Zhang 
10728d0997cSElaine Zhang #define RK3588_PHP_CRU_BASE		0x8000
10828d0997cSElaine Zhang #define RK3588_PMU_CRU_BASE		0x30000
10928d0997cSElaine Zhang #define RK3588_BIGCORE0_CRU_BASE	0x50000
11028d0997cSElaine Zhang #define RK3588_BIGCORE1_CRU_BASE	0x52000
11128d0997cSElaine Zhang #define RK3588_DSU_CRU_BASE		0x58000
11228d0997cSElaine Zhang 
11328d0997cSElaine Zhang #define RK3588_PLL_CON(x)		((x) * 0x4)
11428d0997cSElaine Zhang #define RK3588_MODE_CON0		0x280
11528d0997cSElaine Zhang #define RK3588_CLKSEL_CON(x)		((x) * 0x4 + 0x300)
11628d0997cSElaine Zhang #define RK3588_CLKGATE_CON(x)		((x) * 0x4 + 0x800)
11728d0997cSElaine Zhang #define RK3588_SOFTRST_CON(x)		((x) * 0x4 + 0xa00)
11828d0997cSElaine Zhang #define RK3588_GLB_CNT_TH		0xc00
11928d0997cSElaine Zhang #define RK3588_GLB_SRST_FST		0xc08
12028d0997cSElaine Zhang #define RK3588_GLB_SRST_SND		0xc0c
12128d0997cSElaine Zhang #define RK3588_GLB_RST_CON		0xc10
12228d0997cSElaine Zhang #define RK3588_GLB_RST_ST		0xc04
12328d0997cSElaine Zhang #define RK3588_SDIO_CON0		0xC24
12428d0997cSElaine Zhang #define RK3588_SDIO_CON1		0xC28
12528d0997cSElaine Zhang #define RK3588_SDMMC_CON0		0xC30
12628d0997cSElaine Zhang #define RK3588_SDMMC_CON1		0xC34
12728d0997cSElaine Zhang 
12828d0997cSElaine Zhang #define RK3588_PHP_CLKGATE_CON(x)	((x) * 0x4 + RK3588_PHP_CRU_BASE + 0x800)
12928d0997cSElaine Zhang #define RK3588_PHP_SOFTRST_CON(x)	((x) * 0x4 + RK3588_PHP_CRU_BASE + 0xa00)
13028d0997cSElaine Zhang 
13128d0997cSElaine Zhang #define RK3588_PMU_PLL_CON(x)		((x) * 0x4 + RK3588_PHP_CRU_BASE)
13228d0997cSElaine Zhang #define RK3588_PMU_CLKSEL_CON(x)	((x) * 0x4 + RK3588_PMU_CRU_BASE + 0x300)
13328d0997cSElaine Zhang #define RK3588_PMU_CLKGATE_CON(x)	((x) * 0x4 + RK3588_PMU_CRU_BASE + 0x800)
13428d0997cSElaine Zhang #define RK3588_PMU_SOFTRST_CON(x)	((x) * 0x4 + RK3588_PMU_CRU_BASE + 0xa00)
13528d0997cSElaine Zhang 
13628d0997cSElaine Zhang #define RK3588_B0_PLL_CON(x)		((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE)
13728d0997cSElaine Zhang #define RK3588_B0_PLL_MODE_CON		(RK3588_BIGCORE0_CRU_BASE + 0x280)
13828d0997cSElaine Zhang #define RK3588_BIGCORE0_CLKSEL_CON(x)	((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0x300)
13928d0997cSElaine Zhang #define RK3588_BIGCORE0_CLKGATE_CON(x)	((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0x800)
14028d0997cSElaine Zhang #define RK3588_BIGCORE0_SOFTRST_CON(x)	((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0xa00)
14128d0997cSElaine Zhang #define RK3588_B1_PLL_CON(x)		((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE)
14228d0997cSElaine Zhang #define RK3588_B1_PLL_MODE_CON		(RK3588_BIGCORE1_CRU_BASE + 0x280)
14328d0997cSElaine Zhang #define RK3588_BIGCORE1_CLKSEL_CON(x)	((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0x300)
14428d0997cSElaine Zhang #define RK3588_BIGCORE1_CLKGATE_CON(x)	((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0x800)
14528d0997cSElaine Zhang #define RK3588_BIGCORE1_SOFTRST_CON(x)	((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0xa00)
14628d0997cSElaine Zhang #define RK3588_LPLL_CON(x)		((x) * 0x4 + RK3588_DSU_CRU_BASE)
14728d0997cSElaine Zhang #define RK3588_LPLL_MODE_CON		(RK3588_DSU_CRU_BASE + 0x280)
14828d0997cSElaine Zhang #define RK3588_DSU_CLKSEL_CON(x)	((x) * 0x4 + RK3588_DSU_CRU_BASE + 0x300)
14928d0997cSElaine Zhang #define RK3588_DSU_CLKGATE_CON(x)	((x) * 0x4 + RK3588_DSU_CRU_BASE + 0x800)
15028d0997cSElaine Zhang #define RK3588_DSU_SOFTRST_CON(x)	((x) * 0x4 + RK3588_DSU_CRU_BASE + 0xa00)
15128d0997cSElaine Zhang 
15228d0997cSElaine Zhang enum {
15328d0997cSElaine Zhang 	/* CRU_CLK_SEL8_CON */
15428d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_SRC_SEL_SHIFT		= 14,
15528d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_SRC_SEL_MASK		= 1 << ACLK_LOW_TOP_ROOT_SRC_SEL_SHIFT,
15628d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_SRC_SEL_GPLL		= 0,
15728d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_SRC_SEL_CPLL,
15828d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_DIV_SHIFT		= 9,
15928d0997cSElaine Zhang 	ACLK_LOW_TOP_ROOT_DIV_MASK		= 0x1f << ACLK_LOW_TOP_ROOT_DIV_SHIFT,
16028d0997cSElaine Zhang 	PCLK_TOP_ROOT_SEL_SHIFT			= 7,
16128d0997cSElaine Zhang 	PCLK_TOP_ROOT_SEL_MASK			= 3 << PCLK_TOP_ROOT_SEL_SHIFT,
16228d0997cSElaine Zhang 	PCLK_TOP_ROOT_SEL_100M			= 0,
16328d0997cSElaine Zhang 	PCLK_TOP_ROOT_SEL_50M,
16428d0997cSElaine Zhang 	PCLK_TOP_ROOT_SEL_24M,
16528d0997cSElaine Zhang 	ACLK_TOP_ROOT_SRC_SEL_SHIFT		= 5,
16628d0997cSElaine Zhang 	ACLK_TOP_ROOT_SRC_SEL_MASK		= 3 << ACLK_TOP_ROOT_SRC_SEL_SHIFT,
16728d0997cSElaine Zhang 	ACLK_TOP_ROOT_SRC_SEL_GPLL		= 0,
16828d0997cSElaine Zhang 	ACLK_TOP_ROOT_SRC_SEL_CPLL,
16928d0997cSElaine Zhang 	ACLK_TOP_ROOT_SRC_SEL_AUPLL,
17028d0997cSElaine Zhang 	ACLK_TOP_ROOT_DIV_SHIFT			= 0,
17128d0997cSElaine Zhang 	ACLK_TOP_ROOT_DIV_MASK			= 0x1f << ACLK_TOP_ROOT_DIV_SHIFT,
17228d0997cSElaine Zhang 
17328d0997cSElaine Zhang 	/* CRU_CLK_SEL9_CON */
17428d0997cSElaine Zhang 	ACLK_TOP_S400_SEL_SHIFT			= 8,
17528d0997cSElaine Zhang 	ACLK_TOP_S400_SEL_MASK			= 3 << ACLK_TOP_S400_SEL_SHIFT,
17628d0997cSElaine Zhang 	ACLK_TOP_S400_SEL_400M			= 0,
17728d0997cSElaine Zhang 	ACLK_TOP_S400_SEL_200M,
17828d0997cSElaine Zhang 	ACLK_TOP_S200_SEL_SHIFT			= 6,
17928d0997cSElaine Zhang 	ACLK_TOP_S200_SEL_MASK			= 3 << ACLK_TOP_S200_SEL_SHIFT,
18028d0997cSElaine Zhang 	ACLK_TOP_S200_SEL_200M			= 0,
18128d0997cSElaine Zhang 	ACLK_TOP_S200_SEL_100M,
18228d0997cSElaine Zhang 
18328d0997cSElaine Zhang 	/* CRU_CLK_SEL38_CON */
18428d0997cSElaine Zhang 	CLK_I2C8_SEL_SHIFT			= 13,
18528d0997cSElaine Zhang 	CLK_I2C8_SEL_MASK			= 1 << CLK_I2C8_SEL_SHIFT,
18628d0997cSElaine Zhang 	CLK_I2C7_SEL_SHIFT			= 12,
18728d0997cSElaine Zhang 	CLK_I2C7_SEL_MASK			= 1 << CLK_I2C7_SEL_SHIFT,
18828d0997cSElaine Zhang 	CLK_I2C6_SEL_SHIFT			= 11,
18928d0997cSElaine Zhang 	CLK_I2C6_SEL_MASK			= 1 << CLK_I2C6_SEL_SHIFT,
19028d0997cSElaine Zhang 	CLK_I2C5_SEL_SHIFT			= 10,
19128d0997cSElaine Zhang 	CLK_I2C5_SEL_MASK			= 1 << CLK_I2C5_SEL_SHIFT,
19228d0997cSElaine Zhang 	CLK_I2C4_SEL_SHIFT			= 9,
19328d0997cSElaine Zhang 	CLK_I2C4_SEL_MASK			= 1 << CLK_I2C4_SEL_SHIFT,
19428d0997cSElaine Zhang 	CLK_I2C3_SEL_SHIFT			= 8,
19528d0997cSElaine Zhang 	CLK_I2C3_SEL_MASK			= 1 << CLK_I2C3_SEL_SHIFT,
19628d0997cSElaine Zhang 	CLK_I2C2_SEL_SHIFT			= 7,
19728d0997cSElaine Zhang 	CLK_I2C2_SEL_MASK			= 1 << CLK_I2C2_SEL_SHIFT,
19828d0997cSElaine Zhang 	CLK_I2C1_SEL_SHIFT			= 6,
19928d0997cSElaine Zhang 	CLK_I2C1_SEL_MASK			= 1 << CLK_I2C1_SEL_SHIFT,
20028d0997cSElaine Zhang 	ACLK_BUS_ROOT_SEL_SHIFT			= 5,
20128d0997cSElaine Zhang 	ACLK_BUS_ROOT_SEL_MASK			= 3 << ACLK_BUS_ROOT_SEL_SHIFT,
20228d0997cSElaine Zhang 	ACLK_BUS_ROOT_SEL_GPLL			= 0,
20328d0997cSElaine Zhang 	ACLK_BUS_ROOT_SEL_CPLL,
20428d0997cSElaine Zhang 	ACLK_BUS_ROOT_DIV_SHIFT			= 0,
20528d0997cSElaine Zhang 	ACLK_BUS_ROOT_DIV_MASK			= 0x1f << ACLK_BUS_ROOT_DIV_SHIFT,
20628d0997cSElaine Zhang 
20728d0997cSElaine Zhang 	/* CRU_CLK_SEL40_CON */
20828d0997cSElaine Zhang 	CLK_SARADC_SEL_SHIFT			= 14,
20928d0997cSElaine Zhang 	CLK_SARADC_SEL_MASK			= 0x1 << CLK_SARADC_SEL_SHIFT,
21028d0997cSElaine Zhang 	CLK_SARADC_SEL_GPLL			= 0,
21128d0997cSElaine Zhang 	CLK_SARADC_SEL_24M,
21228d0997cSElaine Zhang 	CLK_SARADC_DIV_SHIFT			= 6,
21328d0997cSElaine Zhang 	CLK_SARADC_DIV_MASK			= 0xff << CLK_SARADC_DIV_SHIFT,
21428d0997cSElaine Zhang 
21528d0997cSElaine Zhang 	/* CRU_CLK_SEL41_CON */
21628d0997cSElaine Zhang 	CLK_UART_SRC_SEL_SHIFT			= 14,
21728d0997cSElaine Zhang 	CLK_UART_SRC_SEL_MASK			= 0x1 << CLK_UART_SRC_SEL_SHIFT,
21828d0997cSElaine Zhang 	CLK_UART_SRC_SEL_GPLL			= 0,
21928d0997cSElaine Zhang 	CLK_UART_SRC_SEL_CPLL,
22028d0997cSElaine Zhang 	CLK_UART_SRC_DIV_SHIFT			= 9,
22128d0997cSElaine Zhang 	CLK_UART_SRC_DIV_MASK			= 0x1f << CLK_UART_SRC_DIV_SHIFT,
22228d0997cSElaine Zhang 	CLK_TSADC_SEL_SHIFT			= 8,
22328d0997cSElaine Zhang 	CLK_TSADC_SEL_MASK			= 0x1 << CLK_TSADC_SEL_SHIFT,
22428d0997cSElaine Zhang 	CLK_TSADC_SEL_GPLL			= 0,
22528d0997cSElaine Zhang 	CLK_TSADC_SEL_24M,
22628d0997cSElaine Zhang 	CLK_TSADC_DIV_SHIFT			= 0,
22728d0997cSElaine Zhang 	CLK_TSADC_DIV_MASK			= 0xff << CLK_TSADC_DIV_SHIFT,
22828d0997cSElaine Zhang 
22928d0997cSElaine Zhang 	/* CRU_CLK_SEL42_CON */
23028d0997cSElaine Zhang 	CLK_UART_FRAC_NUMERATOR_SHIFT		= 16,
23128d0997cSElaine Zhang 	CLK_UART_FRAC_NUMERATOR_MASK		= 0xffff << 16,
23228d0997cSElaine Zhang 	CLK_UART_FRAC_DENOMINATOR_SHIFT		= 0,
23328d0997cSElaine Zhang 	CLK_UART_FRAC_DENOMINATOR_MASK		= 0xffff,
23428d0997cSElaine Zhang 
23528d0997cSElaine Zhang 	/* CRU_CLK_SEL43_CON */
23628d0997cSElaine Zhang 	CLK_UART_SEL_SHIFT			= 0,
23728d0997cSElaine Zhang 	CLK_UART_SEL_MASK			= 0x3 << CLK_UART_SEL_SHIFT,
23828d0997cSElaine Zhang 	CLK_UART_SEL_SRC			= 0,
23928d0997cSElaine Zhang 	CLK_UART_SEL_FRAC,
24028d0997cSElaine Zhang 	CLK_UART_SEL_XIN24M,
24128d0997cSElaine Zhang 
24228d0997cSElaine Zhang 	/* CRU_CLK_SEL59_CON */
24328d0997cSElaine Zhang 	CLK_PWM2_SEL_SHIFT			= 14,
24428d0997cSElaine Zhang 	CLK_PWM2_SEL_MASK			= 3 << CLK_PWM2_SEL_SHIFT,
24528d0997cSElaine Zhang 	CLK_PWM1_SEL_SHIFT			= 12,
24628d0997cSElaine Zhang 	CLK_PWM1_SEL_MASK			= 3 << CLK_PWM1_SEL_SHIFT,
24728d0997cSElaine Zhang 	CLK_SPI4_SEL_SHIFT			= 10,
24828d0997cSElaine Zhang 	CLK_SPI4_SEL_MASK			= 3 << CLK_SPI4_SEL_SHIFT,
24928d0997cSElaine Zhang 	CLK_SPI3_SEL_SHIFT			= 8,
25028d0997cSElaine Zhang 	CLK_SPI3_SEL_MASK			= 3 << CLK_SPI3_SEL_SHIFT,
25128d0997cSElaine Zhang 	CLK_SPI2_SEL_SHIFT			= 6,
25228d0997cSElaine Zhang 	CLK_SPI2_SEL_MASK			= 3 << CLK_SPI2_SEL_SHIFT,
25328d0997cSElaine Zhang 	CLK_SPI1_SEL_SHIFT			= 4,
25428d0997cSElaine Zhang 	CLK_SPI1_SEL_MASK			= 3 << CLK_SPI1_SEL_SHIFT,
25528d0997cSElaine Zhang 	CLK_SPI0_SEL_SHIFT			= 2,
25628d0997cSElaine Zhang 	CLK_SPI0_SEL_MASK			= 3 << CLK_SPI0_SEL_SHIFT,
25728d0997cSElaine Zhang 	CLK_SPI_SEL_200M			= 0,
25828d0997cSElaine Zhang 	CLK_SPI_SEL_150M,
25928d0997cSElaine Zhang 	CLK_SPI_SEL_24M,
26028d0997cSElaine Zhang 
26128d0997cSElaine Zhang 	/* CRU_CLK_SEL60_CON */
26228d0997cSElaine Zhang 	CLK_PWM3_SEL_SHIFT			= 0,
26328d0997cSElaine Zhang 	CLK_PWM3_SEL_MASK			= 3 << CLK_PWM3_SEL_SHIFT,
26428d0997cSElaine Zhang 	CLK_PWM_SEL_100M			= 0,
26528d0997cSElaine Zhang 	CLK_PWM_SEL_50M,
26628d0997cSElaine Zhang 	CLK_PWM_SEL_24M,
26728d0997cSElaine Zhang 
268d2b507bbSElaine Zhang 	/* CRU_CLK_SEL62_CON */
269d2b507bbSElaine Zhang 	DCLK_DECOM_SEL_SHIFT			= 5,
270d2b507bbSElaine Zhang 	DCLK_DECOM_SEL_MASK			= 1 << DCLK_DECOM_SEL_SHIFT,
271d2b507bbSElaine Zhang 	DCLK_DECOM_SEL_GPLL			= 0,
272d2b507bbSElaine Zhang 	DCLK_DECOM_SEL_SPLL,
273d2b507bbSElaine Zhang 	DCLK_DECOM_DIV_SHIFT			= 0,
274d2b507bbSElaine Zhang 	DCLK_DECOM_DIV_MASK			= 0x1F << DCLK_DECOM_DIV_SHIFT,
275d2b507bbSElaine Zhang 
27628d0997cSElaine Zhang 	/* CRU_CLK_SEL77_CON */
27728d0997cSElaine Zhang 	CCLK_EMMC_SEL_SHIFT			= 14,
27828d0997cSElaine Zhang 	CCLK_EMMC_SEL_MASK			= 3 << CCLK_EMMC_SEL_SHIFT,
27928d0997cSElaine Zhang 	CCLK_EMMC_SEL_GPLL			= 0,
28028d0997cSElaine Zhang 	CCLK_EMMC_SEL_CPLL,
28128d0997cSElaine Zhang 	CCLK_EMMC_SEL_24M,
28228d0997cSElaine Zhang 	CCLK_EMMC_DIV_SHIFT			= 8,
28328d0997cSElaine Zhang 	CCLK_EMMC_DIV_MASK			= 0x3f << CCLK_EMMC_DIV_SHIFT,
28428d0997cSElaine Zhang 
28528d0997cSElaine Zhang 	/* CRU_CLK_SEL78_CON */
28628d0997cSElaine Zhang 	SCLK_SFC_SEL_SHIFT			= 12,
28728d0997cSElaine Zhang 	SCLK_SFC_SEL_MASK			= 3 << SCLK_SFC_SEL_SHIFT,
28828d0997cSElaine Zhang 	SCLK_SFC_SEL_GPLL			= 0,
28928d0997cSElaine Zhang 	SCLK_SFC_SEL_CPLL,
29028d0997cSElaine Zhang 	SCLK_SFC_SEL_24M,
29128d0997cSElaine Zhang 	SCLK_SFC_DIV_SHIFT			= 6,
29228d0997cSElaine Zhang 	SCLK_SFC_DIV_MASK			= 0x3f << SCLK_SFC_DIV_SHIFT,
29328d0997cSElaine Zhang 	BCLK_EMMC_SEL_SHIFT			= 5,
29428d0997cSElaine Zhang 	BCLK_EMMC_SEL_MASK			= 1 << BCLK_EMMC_SEL_SHIFT,
29528d0997cSElaine Zhang 	BCLK_EMMC_SEL_GPLL			= 0,
29628d0997cSElaine Zhang 	BCLK_EMMC_SEL_CPLL,
29728d0997cSElaine Zhang 	BCLK_EMMC_DIV_SHIFT			= 0,
29828d0997cSElaine Zhang 	BCLK_EMMC_DIV_MASK			= 0x1f << BCLK_EMMC_DIV_SHIFT,
29928d0997cSElaine Zhang 
30028d0997cSElaine Zhang 	/* CRU_CLK_SEL81_CON */
30128d0997cSElaine Zhang 	CLK_GMAC1_PTP_SEL_SHIFT			= 13,
30228d0997cSElaine Zhang 	CLK_GMAC1_PTP_SEL_MASK			= 1 << CLK_GMAC1_PTP_SEL_SHIFT,
30328d0997cSElaine Zhang 	CLK_GMAC1_PTP_SEL_CPLL			= 0,
30428d0997cSElaine Zhang 	CLK_GMAC1_PTP_DIV_SHIFT			= 7,
30528d0997cSElaine Zhang 	CLK_GMAC1_PTP_DIV_MASK			= 0x3f << CLK_GMAC1_PTP_DIV_SHIFT,
30628d0997cSElaine Zhang 	CLK_GMAC0_PTP_SEL_SHIFT			= 6,
30728d0997cSElaine Zhang 	CLK_GMAC0_PTP_SEL_MASK			= 1 << CLK_GMAC0_PTP_SEL_SHIFT,
30828d0997cSElaine Zhang 	CLK_GMAC0_PTP_SEL_CPLL			= 0,
30928d0997cSElaine Zhang 	CLK_GMAC0_PTP_DIV_SHIFT			= 0,
31028d0997cSElaine Zhang 	CLK_GMAC0_PTP_DIV_MASK			= 0x3f << CLK_GMAC0_PTP_DIV_SHIFT,
31128d0997cSElaine Zhang 
31228d0997cSElaine Zhang 	/* CRU_CLK_SEL83_CON */
31328d0997cSElaine Zhang 	CLK_GMAC_125M_SEL_SHIFT			= 15,
31428d0997cSElaine Zhang 	CLK_GMAC_125M_SEL_MASK			= 1 << CLK_GMAC_125M_SEL_SHIFT,
31528d0997cSElaine Zhang 	CLK_GMAC_125M_SEL_GPLL			= 0,
31628d0997cSElaine Zhang 	CLK_GMAC_125M_SEL_CPLL,
31728d0997cSElaine Zhang 	CLK_GMAC_125M_DIV_SHIFT			= 8,
31828d0997cSElaine Zhang 	CLK_GMAC_125M_DIV_MASK			= 0x7f << CLK_GMAC_125M_DIV_SHIFT,
31928d0997cSElaine Zhang 
32028d0997cSElaine Zhang 	/* CRU_CLK_SEL84_CON */
32128d0997cSElaine Zhang 	CLK_GMAC_50M_SEL_SHIFT			= 7,
32228d0997cSElaine Zhang 	CLK_GMAC_50M_SEL_MASK			= 1 << CLK_GMAC_50M_SEL_SHIFT,
32328d0997cSElaine Zhang 	CLK_GMAC_50M_SEL_GPLL			= 0,
32428d0997cSElaine Zhang 	CLK_GMAC_50M_SEL_CPLL,
32528d0997cSElaine Zhang 	CLK_GMAC_50M_DIV_SHIFT			= 0,
32628d0997cSElaine Zhang 	CLK_GMAC_50M_DIV_MASK			= 0x7f << CLK_GMAC_50M_DIV_SHIFT,
32728d0997cSElaine Zhang 
32828d0997cSElaine Zhang 	/* CRU_CLK_SEL110_CON */
32928d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_SHIFT			= 10,
33028d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_MASK			= 3 << HCLK_VOP_ROOT_SEL_SHIFT,
33128d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_200M			= 0,
33228d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_100M,
33328d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_50M,
33428d0997cSElaine Zhang 	HCLK_VOP_ROOT_SEL_24M,
33528d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_SHIFT		= 8,
33628d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_MASK		= 3 << ACLK_VOP_LOW_ROOT_SEL_SHIFT,
33728d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_400M		= 0,
33828d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_200M,
33928d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_100M,
34028d0997cSElaine Zhang 	ACLK_VOP_LOW_ROOT_SEL_24M,
34128d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_SHIFT			= 5,
3426f22b15eSJianqun Xu 	ACLK_VOP_ROOT_SEL_MASK			= 7 << ACLK_VOP_ROOT_SEL_SHIFT,
34328d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_GPLL			= 0,
34428d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_CPLL,
34528d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_AUPLL,
34628d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_NPLL,
34728d0997cSElaine Zhang 	ACLK_VOP_ROOT_SEL_SPLL,
34828d0997cSElaine Zhang 	ACLK_VOP_ROOT_DIV_SHIFT			= 0,
34928d0997cSElaine Zhang 	ACLK_VOP_ROOT_DIV_MASK			= 0x1f << ACLK_VOP_ROOT_DIV_SHIFT,
35028d0997cSElaine Zhang 
35128d0997cSElaine Zhang 	/* CRU_CLK_SEL111_CON */
35228d0997cSElaine Zhang 	DCLK1_VOP_SRC_SEL_SHIFT			= 14,
35328d0997cSElaine Zhang 	DCLK1_VOP_SRC_SEL_MASK			= 3 << DCLK1_VOP_SRC_SEL_SHIFT,
35428d0997cSElaine Zhang 	DCLK1_VOP_SRC_DIV_SHIFT			= 9,
35528d0997cSElaine Zhang 	DCLK1_VOP_SRC_DIV_MASK			= 0x1f << DCLK1_VOP_SRC_DIV_SHIFT,
35628d0997cSElaine Zhang 	DCLK0_VOP_SRC_SEL_SHIFT			= 7,
35728d0997cSElaine Zhang 	DCLK0_VOP_SRC_SEL_MASK			= 3 << DCLK0_VOP_SRC_SEL_SHIFT,
35828d0997cSElaine Zhang 	DCLK_VOP_SRC_SEL_GPLL			= 0,
35928d0997cSElaine Zhang 	DCLK_VOP_SRC_SEL_CPLL,
36028d0997cSElaine Zhang 	DCLK_VOP_SRC_SEL_V0PLL,
36128d0997cSElaine Zhang 	DCLK_VOP_SRC_SEL_AUPLL,
36228d0997cSElaine Zhang 	DCLK0_VOP_SRC_DIV_SHIFT			= 0,
36328d0997cSElaine Zhang 	DCLK0_VOP_SRC_DIV_MASK			= 0x7f << DCLK0_VOP_SRC_DIV_SHIFT,
36428d0997cSElaine Zhang 
36528d0997cSElaine Zhang 	/* CRU_CLK_SEL112_CON */
366da48e024SAlgea Cao 	DCLK2_VOP_SEL_SHIFT			= 11,
367da48e024SAlgea Cao 	DCLK2_VOP_SEL_MASK			= 3 << DCLK2_VOP_SEL_SHIFT,
368da48e024SAlgea Cao 	DCLK1_VOP_SEL_SHIFT			= 9,
369da48e024SAlgea Cao 	DCLK1_VOP_SEL_MASK			= 3 << DCLK1_VOP_SEL_SHIFT,
370da48e024SAlgea Cao 	DCLK0_VOP_SEL_SHIFT			= 7,
371da48e024SAlgea Cao 	DCLK0_VOP_SEL_MASK			= 3 << DCLK0_VOP_SEL_SHIFT,
37228d0997cSElaine Zhang 	DCLK2_VOP_SRC_SEL_SHIFT			= 5,
37328d0997cSElaine Zhang 	DCLK2_VOP_SRC_SEL_MASK			= 3 << DCLK2_VOP_SRC_SEL_SHIFT,
37428d0997cSElaine Zhang 	DCLK2_VOP_SRC_DIV_SHIFT			= 0,
37528d0997cSElaine Zhang 	DCLK2_VOP_SRC_DIV_MASK			= 0x1f << DCLK2_VOP_SRC_DIV_SHIFT,
37628d0997cSElaine Zhang 
37728d0997cSElaine Zhang 	/* CRU_CLK_SEL113_CON */
37828d0997cSElaine Zhang 	DCLK3_VOP_SRC_SEL_SHIFT			= 7,
37928d0997cSElaine Zhang 	DCLK3_VOP_SRC_SEL_MASK			= 3 << DCLK3_VOP_SRC_SEL_SHIFT,
38028d0997cSElaine Zhang 	DCLK3_VOP_SRC_DIV_SHIFT			= 0,
38128d0997cSElaine Zhang 	DCLK3_VOP_SRC_DIV_MASK			= 0x7f << DCLK3_VOP_SRC_DIV_SHIFT,
38228d0997cSElaine Zhang 
383*0265e00cSElaine Zhang 	/* CRU_CLK_SEL114_CON */
384*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_SHIFT			= 7,
385*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_MASK			= 3 << CLK_DSIHOST_SEL_SHIFT,
386*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_GPLL			= 0,
387*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_CPLL,
388*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_V0PLL,
389*0265e00cSElaine Zhang 	CLK_DSIHOST_SEL_SPLL,
390*0265e00cSElaine Zhang 	CLK_DSIHOST_DIV_SHIFT			= 0,
391*0265e00cSElaine Zhang 	CLK_DSIHOST_DIV_MASK			= 0X7F << CLK_DSIHOST_DIV_SHIFT,
392*0265e00cSElaine Zhang 
393b6d6b016SZhang Yubing 	/* CRU_CLK_SEL117_CON */
394b6d6b016SZhang Yubing 	CLK_AUX16MHZ_1_DIV_SHIFT		= 8,
395b6d6b016SZhang Yubing 	CLK_AUX16MHZ_1_DIV_MASK			= 0xff << CLK_AUX16MHZ_1_DIV_SHIFT,
396b6d6b016SZhang Yubing 	CLK_AUX16MHZ_0_DIV_SHIFT		= 0,
397b6d6b016SZhang Yubing 	CLK_AUX16MHZ_0_DIV_MASK			= 0xff << CLK_AUX16MHZ_0_DIV_SHIFT,
398b6d6b016SZhang Yubing 
39928d0997cSElaine Zhang 	/* CRU_CLK_SEL165_CON */
40028d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_SHIFT		= 6,
40128d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_MASK		= 3 << PCLK_CENTER_ROOT_SEL_SHIFT,
40228d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_200M		= 0,
40328d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_100M,
40428d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_50M,
40528d0997cSElaine Zhang 	PCLK_CENTER_ROOT_SEL_24M,
40628d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_SHIFT		= 4,
40728d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_MASK		= 3 << HCLK_CENTER_ROOT_SEL_SHIFT,
40828d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_400M		= 0,
40928d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_200M,
41028d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_100M,
41128d0997cSElaine Zhang 	HCLK_CENTER_ROOT_SEL_24M,
41228d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_SHIFT		= 2,
41328d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_MASK		= 3 << ACLK_CENTER_LOW_ROOT_SEL_SHIFT,
41428d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_500M		= 0,
41528d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_250M,
41628d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_100M,
41728d0997cSElaine Zhang 	ACLK_CENTER_LOW_ROOT_SEL_24M,
41828d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_SHIFT		= 0,
41928d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_MASK		= 3 << ACLK_CENTER_ROOT_SEL_SHIFT,
42028d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_700M		= 0,
42128d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_400M,
42228d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_200M,
42328d0997cSElaine Zhang 	ACLK_CENTER_ROOT_SEL_24M,
42428d0997cSElaine Zhang 
42528d0997cSElaine Zhang 	/* CRU_CLK_SEL172_CON */
42628d0997cSElaine Zhang 	CCLK_SDIO_SRC_SEL_SHIFT			= 8,
42728d0997cSElaine Zhang 	CCLK_SDIO_SRC_SEL_MASK			= 3 << CCLK_SDIO_SRC_SEL_SHIFT,
42828d0997cSElaine Zhang 	CCLK_SDIO_SRC_SEL_GPLL			= 0,
42928d0997cSElaine Zhang 	CCLK_SDIO_SRC_SEL_CPLL,
43028d0997cSElaine Zhang 	CCLK_SDIO_SRC_SEL_24M,
43128d0997cSElaine Zhang 	CCLK_SDIO_SRC_DIV_SHIFT			= 2,
43228d0997cSElaine Zhang 	CCLK_SDIO_SRC_DIV_MASK			= 0x3f << CCLK_SDIO_SRC_DIV_SHIFT,
43328d0997cSElaine Zhang 
434921abd27SElaine Zhang 	/* CRU_CLK_SEL176_CON */
435921abd27SElaine Zhang 	CLK_PCIE_PHY1_PLL_DIV_SHIFT		= 6,
436921abd27SElaine Zhang 	CLK_PCIE_PHY1_PLL_DIV_MASK		= 0x3f << CLK_PCIE_PHY1_PLL_DIV_SHIFT,
437921abd27SElaine Zhang 	CLK_PCIE_PHY0_PLL_DIV_SHIFT		= 0,
438921abd27SElaine Zhang 	CLK_PCIE_PHY0_PLL_DIV_MASK		= 0x3f << CLK_PCIE_PHY0_PLL_DIV_SHIFT,
439921abd27SElaine Zhang 
440921abd27SElaine Zhang 	/* CRU_CLK_SEL177_CON */
441921abd27SElaine Zhang 	CLK_PCIE_PHY2_REF_SEL_SHIFT		= 8,
442921abd27SElaine Zhang 	CLK_PCIE_PHY2_REF_SEL_MASK		= 1 << CLK_PCIE_PHY2_REF_SEL_SHIFT,
443921abd27SElaine Zhang 	CLK_PCIE_PHY1_REF_SEL_SHIFT		= 7,
444921abd27SElaine Zhang 	CLK_PCIE_PHY1_REF_SEL_MASK		= 1 << CLK_PCIE_PHY1_REF_SEL_SHIFT,
445921abd27SElaine Zhang 	CLK_PCIE_PHY0_REF_SEL_SHIFT		= 6,
446921abd27SElaine Zhang 	CLK_PCIE_PHY0_REF_SEL_MASK		= 1 << CLK_PCIE_PHY0_REF_SEL_SHIFT,
447921abd27SElaine Zhang 	CLK_PCIE_PHY_REF_SEL_24M		= 0,
448921abd27SElaine Zhang 	CLK_PCIE_PHY_REF_SEL_PPLL,
449921abd27SElaine Zhang 	CLK_PCIE_PHY2_PLL_DIV_SHIFT		= 0,
450921abd27SElaine Zhang 	CLK_PCIE_PHY2_PLL_DIV_MASK		= 0x3f << CLK_PCIE_PHY2_PLL_DIV_SHIFT,
451921abd27SElaine Zhang 
4526fe01683SElaine Zhang 	/* PMUCRU_CLK_SEL2_CON */
4536fe01683SElaine Zhang 	CLK_PMU1PWM_SEL_SHIFT			= 9,
4546fe01683SElaine Zhang 	CLK_PMU1PWM_SEL_MASK			= 3 << CLK_PMU1PWM_SEL_SHIFT,
4556fe01683SElaine Zhang 
45628d0997cSElaine Zhang 	/* PMUCRU_CLK_SEL3_CON */
45728d0997cSElaine Zhang 	CLK_I2C0_SEL_SHIFT			= 6,
45828d0997cSElaine Zhang 	CLK_I2C0_SEL_MASK			= 1 << CLK_I2C0_SEL_SHIFT,
45928d0997cSElaine Zhang 	CLK_I2C_SEL_200M			= 0,
46028d0997cSElaine Zhang 	CLK_I2C_SEL_100M,
46128d0997cSElaine Zhang };
46228d0997cSElaine Zhang #endif
463