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