1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2022 Rockchip Electronics Co. Ltd. 4*4882a593Smuzhiyun * Author: 5*4882a593Smuzhiyun * Elaine Zhang <zhangqing@rock-chips.com> 6*4882a593Smuzhiyun * Finley Xiao <finley.xiao@rock-chips.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef _ASM_ARCH_CRU_RK3562_H 10*4882a593Smuzhiyun #define _ASM_ARCH_CRU_RK3562_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define MHz 1000000 13*4882a593Smuzhiyun #define KHz 1000 14*4882a593Smuzhiyun #define OSC_HZ (24 * MHz) 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #define CPU_PVTPLL_HZ (1008 * MHz) 17*4882a593Smuzhiyun #define APLL_HZ (600 * MHz) 18*4882a593Smuzhiyun #define GPLL_HZ (1188 * MHz) 19*4882a593Smuzhiyun #define CPLL_HZ (1000 * MHz) 20*4882a593Smuzhiyun #define HPLL_HZ (1000 * MHz) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* RK3562 pll id */ 23*4882a593Smuzhiyun enum rk3562_pll_id { 24*4882a593Smuzhiyun APLL, 25*4882a593Smuzhiyun GPLL, 26*4882a593Smuzhiyun VPLL, 27*4882a593Smuzhiyun HPLL, 28*4882a593Smuzhiyun CPLL, 29*4882a593Smuzhiyun DPLL, 30*4882a593Smuzhiyun PLL_COUNT, 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun struct rk3562_clk_info { 34*4882a593Smuzhiyun unsigned long id; 35*4882a593Smuzhiyun char *name; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun struct rk3562_clk_priv { 39*4882a593Smuzhiyun struct rk3562_cru *cru; 40*4882a593Smuzhiyun ulong gpll_hz; 41*4882a593Smuzhiyun ulong vpll_hz; 42*4882a593Smuzhiyun ulong hpll_hz; 43*4882a593Smuzhiyun ulong cpll_hz; 44*4882a593Smuzhiyun ulong armclk_hz; 45*4882a593Smuzhiyun ulong armclk_enter_hz; 46*4882a593Smuzhiyun ulong armclk_init_hz; 47*4882a593Smuzhiyun bool sync_kernel; 48*4882a593Smuzhiyun bool set_armclk_rate; 49*4882a593Smuzhiyun }; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun struct rk3562_cru { 52*4882a593Smuzhiyun /* top cru */ 53*4882a593Smuzhiyun uint32_t apll_con[5]; 54*4882a593Smuzhiyun uint32_t reserved0014[19]; 55*4882a593Smuzhiyun uint32_t gpll_con[5]; 56*4882a593Smuzhiyun uint32_t reserved0074[3]; 57*4882a593Smuzhiyun uint32_t vpll_con[5]; 58*4882a593Smuzhiyun uint32_t reserved0094[3]; 59*4882a593Smuzhiyun uint32_t hpll_con[5]; 60*4882a593Smuzhiyun uint32_t reserved00b4[19]; 61*4882a593Smuzhiyun uint32_t clksel_con[48]; 62*4882a593Smuzhiyun uint32_t reserved01c0[80]; 63*4882a593Smuzhiyun uint32_t gate_con[28]; 64*4882a593Smuzhiyun uint32_t reserved370[36]; 65*4882a593Smuzhiyun uint32_t softrst_con[28]; 66*4882a593Smuzhiyun uint32_t reserved0470[100]; 67*4882a593Smuzhiyun uint32_t mode_con[1]; 68*4882a593Smuzhiyun uint32_t reserved0604[3]; 69*4882a593Smuzhiyun uint32_t glb_cnt_th; 70*4882a593Smuzhiyun uint32_t glb_srst_fst; 71*4882a593Smuzhiyun uint32_t glb_srst_snd; 72*4882a593Smuzhiyun uint32_t glb_rst_con; 73*4882a593Smuzhiyun uint32_t glb_rst_st; 74*4882a593Smuzhiyun unsigned int sdmmc0_con[2]; 75*4882a593Smuzhiyun unsigned int sdmmc1_con[2]; 76*4882a593Smuzhiyun uint32_t reserved0634[2]; 77*4882a593Smuzhiyun unsigned int emmc_con[1]; 78*4882a593Smuzhiyun uint32_t reserved0640[15984]; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun /* pmu0 cru */ 81*4882a593Smuzhiyun uint32_t reserved10000[64]; 82*4882a593Smuzhiyun uint32_t pmu0clksel_con[4]; 83*4882a593Smuzhiyun uint32_t reserved10110[28]; 84*4882a593Smuzhiyun uint32_t pmu0gate_con[3]; 85*4882a593Smuzhiyun uint32_t reserved1018c[29]; 86*4882a593Smuzhiyun uint32_t pmu0softrst_con[3]; 87*4882a593Smuzhiyun uint32_t reserved1020c[8061]; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* pmu1 cru */ 90*4882a593Smuzhiyun uint32_t reserved18000[16]; 91*4882a593Smuzhiyun uint32_t cpll_con[5]; 92*4882a593Smuzhiyun uint32_t reserved18054[43]; 93*4882a593Smuzhiyun uint32_t pmu1clksel_con[7]; 94*4882a593Smuzhiyun uint32_t reserved1811c[25]; 95*4882a593Smuzhiyun uint32_t pmu1gate_con[4]; 96*4882a593Smuzhiyun uint32_t reserved18190[28]; 97*4882a593Smuzhiyun uint32_t pmu1softrst_con[3]; 98*4882a593Smuzhiyun uint32_t reserved1820c[93]; 99*4882a593Smuzhiyun uint32_t pmu1mode_con[1]; 100*4882a593Smuzhiyun uint32_t reserved18384[7967]; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun /* ddr cru */ 103*4882a593Smuzhiyun uint32_t reserved20000[64]; 104*4882a593Smuzhiyun uint32_t ddrclksel_con[2]; 105*4882a593Smuzhiyun uint32_t reserved20108[30]; 106*4882a593Smuzhiyun uint32_t ddrgate_con[2]; 107*4882a593Smuzhiyun uint32_t reserved20188[30]; 108*4882a593Smuzhiyun uint32_t ddrsoftrst_con[2]; 109*4882a593Smuzhiyun uint32_t reserved20208[8062]; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun /* subddr cru */ 112*4882a593Smuzhiyun uint32_t reserved28000[8]; 113*4882a593Smuzhiyun uint32_t dpll_con[5]; 114*4882a593Smuzhiyun uint32_t reserved28034[51]; 115*4882a593Smuzhiyun uint32_t sudbddrclksel_con[1]; 116*4882a593Smuzhiyun uint32_t reserved28104[31]; 117*4882a593Smuzhiyun uint32_t subddrgate_con[1]; 118*4882a593Smuzhiyun uint32_t reserved28184[31]; 119*4882a593Smuzhiyun uint32_t sudbddrsoftrst_con[1]; 120*4882a593Smuzhiyun uint32_t reserved28204[95]; 121*4882a593Smuzhiyun uint32_t subddrmode_con[1]; 122*4882a593Smuzhiyun uint32_t reserved28384[7967]; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* peri cru */ 125*4882a593Smuzhiyun uint32_t reserved30000[64]; 126*4882a593Smuzhiyun uint32_t periclksel_con[48]; 127*4882a593Smuzhiyun uint32_t reserved301c0[80]; 128*4882a593Smuzhiyun uint32_t perigate_con[18]; 129*4882a593Smuzhiyun uint32_t reserved30348[46]; 130*4882a593Smuzhiyun uint32_t perisoftrst_con[18]; 131*4882a593Smuzhiyun uint32_t reserved30448[143]; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun check_member(rk3562_cru, reserved0640[0], 0x00640); 134*4882a593Smuzhiyun check_member(rk3562_cru, reserved1020c[0], 0x1020c); 135*4882a593Smuzhiyun check_member(rk3562_cru, reserved18384[0], 0x18384); 136*4882a593Smuzhiyun check_member(rk3562_cru, reserved20208[0], 0x20208); 137*4882a593Smuzhiyun check_member(rk3562_cru, reserved28384[0], 0x28384); 138*4882a593Smuzhiyun check_member(rk3562_cru, reserved30448[0], 0x30448); 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun struct pll_rate_table { 141*4882a593Smuzhiyun unsigned long rate; 142*4882a593Smuzhiyun unsigned int fbdiv; 143*4882a593Smuzhiyun unsigned int postdiv1; 144*4882a593Smuzhiyun unsigned int refdiv; 145*4882a593Smuzhiyun unsigned int postdiv2; 146*4882a593Smuzhiyun unsigned int dsmpd; 147*4882a593Smuzhiyun unsigned int frac; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun #define RK3562_PMU0_CRU_BASE 0x10000 151*4882a593Smuzhiyun #define RK3562_PMU1_CRU_BASE 0x18000 152*4882a593Smuzhiyun #define RK3562_DDR_CRU_BASE 0x20000 153*4882a593Smuzhiyun #define RK3562_SUBDDR_CRU_BASE 0x28000 154*4882a593Smuzhiyun #define RK3562_PERI_CRU_BASE 0x30000 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define RK3562_PLL_CON(x) ((x) * 0x4) 157*4882a593Smuzhiyun #define RK3562_PMU1_PLL_CON(x) ((x) * 0x4 + RK3562_PMU1_CRU_BASE + 0x40) 158*4882a593Smuzhiyun #define RK3562_SUBDDR_PLL_CON(x) ((x) * 0x4 + RK3562_SUBDDR_CRU_BASE + 0x20) 159*4882a593Smuzhiyun #define RK3562_MODE_CON 0x600 160*4882a593Smuzhiyun #define RK3562_PMU1_MODE_CON (RK3562_PMU1_CRU_BASE + 0x380) 161*4882a593Smuzhiyun #define RK3562_SUBDDR_MODE_CON (RK3562_SUBDDR_CRU_BASE + 0x380) 162*4882a593Smuzhiyun #define RK3562_GLB_SRST_FST 0x614 163*4882a593Smuzhiyun #define RK3562_GLB_SRST_SND 0x618 164*4882a593Smuzhiyun #define RK3562_GLB_RST_CON 0x61c 165*4882a593Smuzhiyun #define RK3562_GLB_RST_ST 0x620 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun enum { 168*4882a593Smuzhiyun /* CRU_CLKSEL_CON10 */ 169*4882a593Smuzhiyun CLK_CORE_PRE_DIV_SHIFT = 0, 170*4882a593Smuzhiyun CLK_CORE_PRE_DIV_MASK = 0x1f << CLK_CORE_PRE_DIV_SHIFT, 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* CRU_CLKSEL_CON11 */ 173*4882a593Smuzhiyun ACLK_CORE_PRE_DIV_SHIFT = 0, 174*4882a593Smuzhiyun ACLK_CORE_PRE_DIV_MASK = 0x7 << ACLK_CORE_PRE_DIV_SHIFT, 175*4882a593Smuzhiyun CLK_SCANHS_ACLKM_CORE_DIV_SHIFT = 8, 176*4882a593Smuzhiyun CLK_SCANHS_ACLKM_CORE_DIV_MASK = 0x7 << CLK_SCANHS_ACLKM_CORE_DIV_SHIFT, 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun /* CRU_CLKSEL_CON12 */ 179*4882a593Smuzhiyun PCLK_DBG_PRE_DIV_SHIFT = 0, 180*4882a593Smuzhiyun PCLK_DBG_PRE_DIV_MASK = 0xf << PCLK_DBG_PRE_DIV_SHIFT, 181*4882a593Smuzhiyun CLK_SCANHS_PCLK_DBG_DIV_SHIFT = 8, 182*4882a593Smuzhiyun CLK_SCANHS_PCLK_DBG_DIV_MASK = 0xf << CLK_SCANHS_PCLK_DBG_DIV_SHIFT, 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* CRU_CLKSEL_CON28 */ 185*4882a593Smuzhiyun ACLK_VOP_DIV_SHIFT = 0, 186*4882a593Smuzhiyun ACLK_VOP_DIV_MASK = 0x1f << ACLK_VOP_DIV_SHIFT, 187*4882a593Smuzhiyun ACLK_VOP_SEL_SHIFT = 6, 188*4882a593Smuzhiyun ACLK_VOP_SEL_MASK = 0x3 << ACLK_VOP_SEL_SHIFT, 189*4882a593Smuzhiyun ACLK_VOP_SEL_GPLL = 0, 190*4882a593Smuzhiyun ACLK_VOP_SEL_CPLL, 191*4882a593Smuzhiyun ACLK_VOP_SEL_VPLL, 192*4882a593Smuzhiyun ACLK_VOP_SEL_HPLL, 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun /* CRU_CLKSEL_CON30 */ 195*4882a593Smuzhiyun DCLK_VOP_DIV_SHIFT = 0, 196*4882a593Smuzhiyun DCLK_VOP_DIV_MASK = 0xff << DCLK_VOP_DIV_SHIFT, 197*4882a593Smuzhiyun DCLK_VOP_SEL_SHIFT = 14, 198*4882a593Smuzhiyun DCLK_VOP_SEL_MASK = 0x3 << DCLK_VOP_SEL_SHIFT, 199*4882a593Smuzhiyun DCLK_VOP_SEL_GPLL = 0, 200*4882a593Smuzhiyun DCLK_VOP_SEL_HPLL, 201*4882a593Smuzhiyun DCLK_VOP_SEL_VPLL, 202*4882a593Smuzhiyun DCLK_VOP_SEL_APLL, 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun /* CRU_CLKSEL_CON31 */ 205*4882a593Smuzhiyun DCLK_VOP1_DIV_SHIFT = 0, 206*4882a593Smuzhiyun DCLK_VOP1_DIV_MASK = 0xff << DCLK_VOP1_DIV_SHIFT, 207*4882a593Smuzhiyun DCLK_VOP1_SEL_SHIFT = 14, 208*4882a593Smuzhiyun DCLK_VOP1_SEL_MASK = 0x3 << DCLK_VOP1_SEL_SHIFT, 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun /* CRU_CLKSEL_CON40 */ 211*4882a593Smuzhiyun ACLK_BUS_DIV_SHIFT = 0, 212*4882a593Smuzhiyun ACLK_BUS_DIV_MASK = 0x1f << ACLK_BUS_DIV_SHIFT, 213*4882a593Smuzhiyun ACLK_BUS_SEL_SHIFT = 7, 214*4882a593Smuzhiyun ACLK_BUS_SEL_MASK = 0x1 << ACLK_BUS_SEL_SHIFT, 215*4882a593Smuzhiyun ACLK_BUS_SEL_GPLL = 0, 216*4882a593Smuzhiyun ACLK_BUS_SEL_CPLL, 217*4882a593Smuzhiyun HCLK_BUS_DIV_SHIFT = 8, 218*4882a593Smuzhiyun HCLK_BUS_DIV_MASK = 0x3f << HCLK_BUS_DIV_SHIFT, 219*4882a593Smuzhiyun HCLK_BUS_SEL_SHIFT = 15, 220*4882a593Smuzhiyun HCLK_BUS_SEL_MASK = 0x1 << HCLK_BUS_SEL_SHIFT, 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun /* CRU_CLKSEL_CON41 */ 223*4882a593Smuzhiyun PCLK_BUS_DIV_SHIFT = 0, 224*4882a593Smuzhiyun PCLK_BUS_DIV_MASK = 0x1f << PCLK_BUS_DIV_SHIFT, 225*4882a593Smuzhiyun PCLK_BUS_SEL_SHIFT = 7, 226*4882a593Smuzhiyun PCLK_BUS_SEL_MASK = 0x1 << PCLK_BUS_SEL_SHIFT, 227*4882a593Smuzhiyun CLK_I2C_SEL_SHIFT = 8, 228*4882a593Smuzhiyun CLK_I2C_SEL_MASK = 0x3 << CLK_I2C_SEL_SHIFT, 229*4882a593Smuzhiyun CLK_I2C_SEL_200M = 0, 230*4882a593Smuzhiyun CLK_I2C_SEL_100M, 231*4882a593Smuzhiyun CLK_I2C_SEL_50M, 232*4882a593Smuzhiyun CLK_I2C_SEL_24M, 233*4882a593Smuzhiyun DCLK_BUS_GPIO_SEL_SHIFT = 15, 234*4882a593Smuzhiyun DCLK_BUS_GPIO_SEL_MASK = 0x1 << DCLK_BUS_GPIO_SEL_SHIFT, 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun /* CRU_CLKSEL_CON43 */ 237*4882a593Smuzhiyun CLK_TSADC_DIV_SHIFT = 0, 238*4882a593Smuzhiyun CLK_TSADC_DIV_MASK = 0x7ff << CLK_TSADC_DIV_SHIFT, 239*4882a593Smuzhiyun CLK_TSADC_TSEN_DIV_SHIFT = 11, 240*4882a593Smuzhiyun CLK_TSADC_TSEN_DIV_MASK = 0x1f << CLK_TSADC_TSEN_DIV_SHIFT, 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun /* CRU_CLKSEL_CON44 */ 243*4882a593Smuzhiyun CLK_SARADC_VCCIO156_DIV_SHIFT = 0, 244*4882a593Smuzhiyun CLK_SARADC_VCCIO156_DIV_MASK = 0xfff << CLK_SARADC_VCCIO156_DIV_SHIFT, 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun /* CRU_CLKSEL_CON45 */ 247*4882a593Smuzhiyun CLK_GMAC_125M_SEL_SHIFT = 8, 248*4882a593Smuzhiyun CLK_GMAC_125M_SEL_MASK = 0x1 << CLK_GMAC_125M_SEL_SHIFT, 249*4882a593Smuzhiyun CLK_GMAC_125M = 0, 250*4882a593Smuzhiyun CLK_GMAC_24M, 251*4882a593Smuzhiyun CLK_GMAC_50M_SEL_SHIFT = 7, 252*4882a593Smuzhiyun CLK_GMAC_50M_SEL_MASK = 0x1 << CLK_GMAC_50M_SEL_SHIFT, 253*4882a593Smuzhiyun CLK_GMAC_50M = 0, 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun /* CRU_CLKSEL_CON46 */ 256*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_SEL_SHIFT = 7, 257*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_SEL_MASK = 0x1 << CLK_GMAC_ETH_OUT2IO_SEL_SHIFT, 258*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_GPLL = 0, 259*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_CPLL, 260*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_DIV_SHIFT = 0, 261*4882a593Smuzhiyun CLK_GMAC_ETH_OUT2IO_DIV_MASK = 0x7f, 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun /* PMU0CRU_CLKSEL_CON03 */ 264*4882a593Smuzhiyun CLK_PMU0_I2C0_DIV_SHIFT = 8, 265*4882a593Smuzhiyun CLK_PMU0_I2C0_DIV_MASK = 0x1f << CLK_PMU0_I2C0_DIV_SHIFT, 266*4882a593Smuzhiyun CLK_PMU0_I2C0_SEL_SHIFT = 14, 267*4882a593Smuzhiyun CLK_PMU0_I2C0_SEL_MASK = 0x3 << CLK_PMU0_I2C0_SEL_SHIFT, 268*4882a593Smuzhiyun CLK_PMU0_I2C0_SEL_200M = 0, 269*4882a593Smuzhiyun CLK_PMU0_I2C0_SEL_24M, 270*4882a593Smuzhiyun CLK_PMU0_I2C0_SEL_32K, 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun /* PMU1CRU_CLKSEL_CON02 */ 273*4882a593Smuzhiyun CLK_PMU1_UART0_SRC_DIV_SHIFT = 0, 274*4882a593Smuzhiyun CLK_PMU1_UART0_SRC_DIV_MASK = 0xf << CLK_PMU1_UART0_SRC_DIV_SHIFT, 275*4882a593Smuzhiyun CLK_PMU1_UART0_SEL_SHIFT = 6, 276*4882a593Smuzhiyun CLK_PMU1_UART0_SEL_MASK = 0x3 << CLK_PMU1_UART0_SEL_SHIFT, 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun /* PMU1CRU_CLKSEL_CON04 */ 279*4882a593Smuzhiyun CLK_PMU1_SPI0_DIV_SHIFT = 0, 280*4882a593Smuzhiyun CLK_PMU1_SPI0_DIV_MASK = 0x3 << CLK_PMU1_SPI0_DIV_SHIFT, 281*4882a593Smuzhiyun CLK_PMU1_SPI0_SEL_SHIFT = 6, 282*4882a593Smuzhiyun CLK_PMU1_SPI0_SEL_MASK = 0x3 << CLK_PMU1_SPI0_SEL_SHIFT, 283*4882a593Smuzhiyun CLK_PMU1_SPI0_SEL_200M = 0, 284*4882a593Smuzhiyun CLK_PMU1_SPI0_SEL_24M, 285*4882a593Smuzhiyun CLK_PMU1_SPI0_SEL_32K, 286*4882a593Smuzhiyun CLK_PMU1_PWM0_DIV_SHIFT = 8, 287*4882a593Smuzhiyun CLK_PMU1_PWM0_DIV_MASK = 0x3 << CLK_PMU1_PWM0_DIV_SHIFT, 288*4882a593Smuzhiyun CLK_PMU1_PWM0_SEL_SHIFT = 14, 289*4882a593Smuzhiyun CLK_PMU1_PWM0_SEL_MASK = 0x3 << CLK_PMU1_PWM0_SEL_SHIFT, 290*4882a593Smuzhiyun CLK_PMU1_PWM0_SEL_200M = 0, 291*4882a593Smuzhiyun CLK_PMU1_PWM0_SEL_24M, 292*4882a593Smuzhiyun CLK_PMU1_PWM0_SEL_32K, 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON00 */ 295*4882a593Smuzhiyun ACLK_PERI_DIV_SHIFT = 0, 296*4882a593Smuzhiyun ACLK_PERI_DIV_MASK = 0x1f << ACLK_PERI_DIV_SHIFT, 297*4882a593Smuzhiyun ACLK_PERI_SEL_SHIFT = 7, 298*4882a593Smuzhiyun ACLK_PERI_SEL_MASK = 0x1 << ACLK_PERI_SEL_SHIFT, 299*4882a593Smuzhiyun ACLK_PERI_SEL_GPLL = 0, 300*4882a593Smuzhiyun ACLK_PERI_SEL_CPLL, 301*4882a593Smuzhiyun HCLK_PERI_DIV_SHIFT = 8, 302*4882a593Smuzhiyun HCLK_PERI_DIV_MASK = 0x3f << HCLK_PERI_DIV_SHIFT, 303*4882a593Smuzhiyun HCLK_PERI_SEL_SHIFT = 15, 304*4882a593Smuzhiyun HCLK_PERI_SEL_MASK = 0x1 << HCLK_PERI_SEL_SHIFT, 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON01 */ 307*4882a593Smuzhiyun PCLK_PERI_DIV_SHIFT = 0, 308*4882a593Smuzhiyun PCLK_PERI_DIV_MASK = 0x1f << PCLK_PERI_DIV_SHIFT, 309*4882a593Smuzhiyun PCLK_PERI_SEL_SHIFT = 7, 310*4882a593Smuzhiyun PCLK_PERI_SEL_MASK = 0x1 << PCLK_PERI_SEL_SHIFT, 311*4882a593Smuzhiyun CLK_SAI0_SRC_DIV_SHIFT = 8, 312*4882a593Smuzhiyun CLK_SAI0_SRC_DIV_MASK = 0x3f << CLK_SAI0_SRC_DIV_SHIFT, 313*4882a593Smuzhiyun CLK_SAI0_SRC_SEL_SHIFT = 14, 314*4882a593Smuzhiyun CLK_SAI0_SRC_SEL_MASK = 0x3 << CLK_SAI0_SRC_SEL_SHIFT, 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON16 */ 317*4882a593Smuzhiyun CCLK_SDMMC0_DIV_SHIFT = 0, 318*4882a593Smuzhiyun CCLK_SDMMC0_DIV_MASK = 0xff << CCLK_SDMMC0_DIV_SHIFT, 319*4882a593Smuzhiyun CCLK_SDMMC0_SEL_SHIFT = 14, 320*4882a593Smuzhiyun CCLK_SDMMC0_SEL_MASK = 0x3 << CCLK_SDMMC0_SEL_SHIFT, 321*4882a593Smuzhiyun CCLK_SDMMC_SEL_GPLL = 0, 322*4882a593Smuzhiyun CCLK_SDMMC_SEL_CPLL, 323*4882a593Smuzhiyun CCLK_SDMMC_SEL_24M, 324*4882a593Smuzhiyun CCLK_SDMMC_SEL_HPLL, 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON17 */ 327*4882a593Smuzhiyun CCLK_SDMMC1_DIV_SHIFT = 0, 328*4882a593Smuzhiyun CCLK_SDMMC1_DIV_MASK = 0xff << CCLK_SDMMC1_DIV_SHIFT, 329*4882a593Smuzhiyun CCLK_SDMMC1_SEL_SHIFT = 14, 330*4882a593Smuzhiyun CCLK_SDMMC1_SEL_MASK = 0x3 << CCLK_SDMMC1_SEL_SHIFT, 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON18 */ 333*4882a593Smuzhiyun CCLK_EMMC_DIV_SHIFT = 0, 334*4882a593Smuzhiyun CCLK_EMMC_DIV_MASK = 0xff << CCLK_EMMC_DIV_SHIFT, 335*4882a593Smuzhiyun CCLK_EMMC_SEL_SHIFT = 14, 336*4882a593Smuzhiyun CCLK_EMMC_SEL_MASK = 0x3 << CCLK_EMMC_SEL_SHIFT, 337*4882a593Smuzhiyun CCLK_EMMC_SEL_GPLL = 0, 338*4882a593Smuzhiyun CCLK_EMMC_SEL_CPLL, 339*4882a593Smuzhiyun CCLK_EMMC_SEL_24M, 340*4882a593Smuzhiyun CCLK_EMMC_SEL_HPLL, 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON19 */ 343*4882a593Smuzhiyun BCLK_EMMC_DIV_SHIFT = 8, 344*4882a593Smuzhiyun BCLK_EMMC_DIV_MASK = 0x7f << BCLK_EMMC_DIV_SHIFT, 345*4882a593Smuzhiyun BCLK_EMMC_SEL_SHIFT = 15, 346*4882a593Smuzhiyun BCLK_EMMC_SEL_MASK = 0x1 << BCLK_EMMC_SEL_SHIFT, 347*4882a593Smuzhiyun BCLK_EMMC_SEL_GPLL = 0, 348*4882a593Smuzhiyun BCLK_EMMC_SEL_CPLL, 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON20 */ 351*4882a593Smuzhiyun SCLK_SFC_DIV_SHIFT = 0, 352*4882a593Smuzhiyun SCLK_SFC_DIV_MASK = 0xff << SCLK_SFC_DIV_SHIFT, 353*4882a593Smuzhiyun SCLK_SFC_SEL_SHIFT = 8, 354*4882a593Smuzhiyun SCLK_SFC_SEL_MASK = 0x3 << SCLK_SFC_SEL_SHIFT, 355*4882a593Smuzhiyun SCLK_SFC_SRC_SEL_GPLL = 0, 356*4882a593Smuzhiyun SCLK_SFC_SRC_SEL_CPLL, 357*4882a593Smuzhiyun SCLK_SFC_SRC_SEL_24M, 358*4882a593Smuzhiyun CLK_SPI1_SEL_SHIFT = 12, 359*4882a593Smuzhiyun CLK_SPI1_SEL_MASK = 0x3 << CLK_SPI1_SEL_SHIFT, 360*4882a593Smuzhiyun CLK_SPI_SEL_200M = 0, 361*4882a593Smuzhiyun CLK_SPI_SEL_100M, 362*4882a593Smuzhiyun CLK_SPI_SEL_50M, 363*4882a593Smuzhiyun CLK_SPI_SEL_24M, 364*4882a593Smuzhiyun CLK_SPI2_SEL_SHIFT = 14, 365*4882a593Smuzhiyun CLK_SPI2_SEL_MASK = 0x3 << CLK_SPI2_SEL_SHIFT, 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON21 */ 368*4882a593Smuzhiyun CLK_UART_SRC_DIV_SHIFT = 0, 369*4882a593Smuzhiyun CLK_UART_SRC_DIV_MASK = 0x7f << CLK_UART_SRC_DIV_SHIFT, 370*4882a593Smuzhiyun CLK_UART_SRC_SEL_SHIFT = 8, 371*4882a593Smuzhiyun CLK_UART_SRC_SEL_MASK = 0x1 << CLK_UART_SRC_SEL_SHIFT, 372*4882a593Smuzhiyun CLK_UART_SRC_SEL_GPLL = 0, 373*4882a593Smuzhiyun CLK_UART_SRC_SEL_CPLL, 374*4882a593Smuzhiyun CLK_UART_SEL_SHIFT = 14, 375*4882a593Smuzhiyun CLK_UART_SEL_MASK = 0x3 << CLK_UART_SEL_SHIFT, 376*4882a593Smuzhiyun CLK_UART_SEL_SRC = 0, 377*4882a593Smuzhiyun CLK_UART_SEL_FRAC, 378*4882a593Smuzhiyun CLK_UART_SEL_XIN24M, 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON22 */ 381*4882a593Smuzhiyun CLK_UART_FRAC_NUMERATOR_SHIFT = 16, 382*4882a593Smuzhiyun CLK_UART_FRAC_NUMERATOR_MASK = 0xffff << 16, 383*4882a593Smuzhiyun CLK_UART_FRAC_DENOMINATOR_SHIFT = 0, 384*4882a593Smuzhiyun CLK_UART_FRAC_DENOMINATOR_MASK = 0xffff, 385*4882a593Smuzhiyun 386*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON40 */ 387*4882a593Smuzhiyun CLK_PWM1_PERI_SEL_SHIFT = 0, 388*4882a593Smuzhiyun CLK_PWM1_PERI_SEL_MASK = 0x3 << CLK_PWM1_PERI_SEL_SHIFT, 389*4882a593Smuzhiyun CLK_PWM_SEL_100M = 0, 390*4882a593Smuzhiyun CLK_PWM_SEL_50M, 391*4882a593Smuzhiyun CLK_PWM_SEL_24M, 392*4882a593Smuzhiyun CLK_PWM2_PERI_SEL_SHIFT = 6, 393*4882a593Smuzhiyun CLK_PWM2_PERI_SEL_MASK = 0x3 << CLK_PWM2_PERI_SEL_SHIFT, 394*4882a593Smuzhiyun CLK_PWM3_PERI_SEL_SHIFT = 8, 395*4882a593Smuzhiyun CLK_PWM3_PERI_SEL_MASK = 0x3 << CLK_PWM3_PERI_SEL_SHIFT, 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON43 */ 398*4882a593Smuzhiyun CLK_CORE_CRYPTO_SEL_SHIFT = 0, 399*4882a593Smuzhiyun CLK_CORE_CRYPTO_SEL_MASK = 0x3 << CLK_CORE_CRYPTO_SEL_SHIFT, 400*4882a593Smuzhiyun CLK_CORE_CRYPTO_SEL_200M = 0, 401*4882a593Smuzhiyun CLK_CORE_CRYPTO_SEL_100M, 402*4882a593Smuzhiyun CLK_CORE_CRYPTO_SEL_24M, 403*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_SHIFT = 6, 404*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_MASK = 0x3 << CLK_PKA_CRYPTO_SEL_SHIFT, 405*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_300M = 0, 406*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_200M, 407*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_100M, 408*4882a593Smuzhiyun CLK_PKA_CRYPTO_SEL_24M, 409*4882a593Smuzhiyun TCLK_PERI_WDT_SEL_SHIFT = 15, 410*4882a593Smuzhiyun TCLK_PERI_WDT_SEL_MASK = 0x1 << TCLK_PERI_WDT_SEL_SHIFT, 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun /* PERICRU_CLKSEL_CON46 */ 413*4882a593Smuzhiyun CLK_SARADC_DIV_SHIFT = 0, 414*4882a593Smuzhiyun CLK_SARADC_DIV_MASK = 0xfff << CLK_SARADC_DIV_SHIFT, 415*4882a593Smuzhiyun }; 416*4882a593Smuzhiyun #endif 417