xref: /rk3399_ARM-atf/plat/rockchip/rk3568/drivers/scmi/rk3568_clk.h (revision 673c444372181a5ac23c14b9efd3003a37ce0193)
1*4e1ccc60SShengfei Xu /*
2*4e1ccc60SShengfei Xu  * Copyright (c) 2024-2025, Rockchip Electronics Co., Ltd. All rights reserved.
3*4e1ccc60SShengfei Xu  *
4*4e1ccc60SShengfei Xu  * SPDX-License-Identifier: BSD-3-Clause
5*4e1ccc60SShengfei Xu  */
6*4e1ccc60SShengfei Xu 
7*4e1ccc60SShengfei Xu #ifndef RK3568_CLOCK_H
8*4e1ccc60SShengfei Xu #define RK3568_CLOCK_H
9*4e1ccc60SShengfei Xu 
10*4e1ccc60SShengfei Xu #define CRU_CLKGATE_CON0		0x300
11*4e1ccc60SShengfei Xu #define CRU_CLKGATES_CON(i)		(CRU_CLKGATE_CON0 + (i) * 4)
12*4e1ccc60SShengfei Xu 
13*4e1ccc60SShengfei Xu #define SCRU_GATE_CON00			0x0180
14*4e1ccc60SShengfei Xu #define SCRU_GATE_CON01			0x0184
15*4e1ccc60SShengfei Xu #define SCRU_GATE_CON02			0x0188
16*4e1ccc60SShengfei Xu 
17*4e1ccc60SShengfei Xu #define SGRF_SOC_CON2			0x0008
18*4e1ccc60SShengfei Xu 
19*4e1ccc60SShengfei Xu #define MPLL_HZ				(800 * MHz)
20*4e1ccc60SShengfei Xu #define MPLL_REFDIV			3
21*4e1ccc60SShengfei Xu #define MPLL_FBDIV			200
22*4e1ccc60SShengfei Xu #define MPLL_POSTDIV1			2
23*4e1ccc60SShengfei Xu #define MPLL_POSTDIV2			1
24*4e1ccc60SShengfei Xu #define MPLL_DSMPD			1
25*4e1ccc60SShengfei Xu #define MPLL_FRAC			0
26*4e1ccc60SShengfei Xu 
27*4e1ccc60SShengfei Xu #define PPLL_HZ				(200 * MHz)
28*4e1ccc60SShengfei Xu #define GPLL_HZ				(1188 * MHz)
29*4e1ccc60SShengfei Xu #define ACLK_SECURE_FLASH_S_HZ		(297 * MHz)
30*4e1ccc60SShengfei Xu #define HCLK_SECURE_FLASH_S_HZ		(148500000)
31*4e1ccc60SShengfei Xu #define PCLK_SECURE_FLASH_S_HZ		(99 * MHz)
32*4e1ccc60SShengfei Xu #define PCLK_TOP_S_HZ			(99 * MHz)
33*4e1ccc60SShengfei Xu #define HCLK_VO_S_HZ			(99 * MHz)
34*4e1ccc60SShengfei Xu #define PCLK_DDR_HZ			(99 * MHz)
35*4e1ccc60SShengfei Xu #define PCLK_PDPMU_S_HZ			(100 * MHz)
36*4e1ccc60SShengfei Xu #define HCLK_PDPMU_S_HZ			(100 * MHz)
37*4e1ccc60SShengfei Xu 
38*4e1ccc60SShengfei Xu #define RK3568_PLL_MODE_CON		0x20
39*4e1ccc60SShengfei Xu #define RK3568_PLL_MODE_SHIFT		0
40*4e1ccc60SShengfei Xu #define RK3568_PLL_MODE_MASK		(0x3 << RK3568_PLL_MODE_SHIFT)
41*4e1ccc60SShengfei Xu #define RK3568_PLL_MODE_SLOWMODE	0
42*4e1ccc60SShengfei Xu #define RK3568_PLL_MODE_NORMAL		1
43*4e1ccc60SShengfei Xu #define RK3568_PLLCON(i)		(i * 0x4)
44*4e1ccc60SShengfei Xu #define RK3568_PLLCON0_FBDIV_MASK	0xfff
45*4e1ccc60SShengfei Xu #define RK3568_PLLCON0_FBDIV_SHIFT	0
46*4e1ccc60SShengfei Xu #define RK3568_PLLCON0_POSTDIV1_MASK	0x7
47*4e1ccc60SShengfei Xu #define RK3568_PLLCON0_POSTDIV1_SHIFT	12
48*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_REFDIV_MASK	0x3f
49*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_REFDIV_SHIFT	0
50*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_POSTDIV2_MASK	0x7
51*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_POSTDIV2_SHIFT	6
52*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_LOCK_STATUS	(1 << 10)
53*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_DSMPD_MASK	0x1
54*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_DSMPD_SHIFT	12
55*4e1ccc60SShengfei Xu #define RK3568_PLLCON1_PWRDOWN		(1 << 13)
56*4e1ccc60SShengfei Xu 
57*4e1ccc60SShengfei Xu #define RK3568_CLK_SEL(x)		((x) * 0x4 + 0x100)
58*4e1ccc60SShengfei Xu #define RK3568_PMUCLK_SEL(x)		((x) * 0x4 + 0x100)
59*4e1ccc60SShengfei Xu 
60*4e1ccc60SShengfei Xu #define PMUCRU_MODE_CON00		0x0080
61*4e1ccc60SShengfei Xu #define PMUCRU_PMUCLKSEL_CON00		0x0100
62*4e1ccc60SShengfei Xu #define PMUCRU_PMUCLKSEL_CON03		0x010c
63*4e1ccc60SShengfei Xu #define PMUCRU_PMUGATE_CON01		0x0184
64*4e1ccc60SShengfei Xu #define PMUCRU_CLKGATES_CON(i)		(0x180 + (i) * 4)
65*4e1ccc60SShengfei Xu #define PMUCRU_CLKGATES_CON_CNT		3
66*4e1ccc60SShengfei Xu 
67*4e1ccc60SShengfei Xu void pvtplls_suspend(void);
68*4e1ccc60SShengfei Xu void pvtplls_resume(void);
69*4e1ccc60SShengfei Xu void rockchip_clock_init(void);
70*4e1ccc60SShengfei Xu 
71*4e1ccc60SShengfei Xu #endif /* RK3568_CLOCK_H */
72