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