1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2020 Rockchip Electronics Co. Ltd. 4*4882a593Smuzhiyun * Author: Elaine Zhang <zhangqing@rock-chips.com> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _ASM_ARCH_CRU_RK3588_H 8*4882a593Smuzhiyun #define _ASM_ARCH_CRU_RK3588_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #define MHz 1000000 11*4882a593Smuzhiyun #define KHz 1000 12*4882a593Smuzhiyun #define OSC_HZ (24 * MHz) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #define CPU_PVTPLL_HZ (1008 * MHz) 15*4882a593Smuzhiyun #define LPLL_HZ (816 * MHz) 16*4882a593Smuzhiyun #define GPLL_HZ (1188 * MHz) 17*4882a593Smuzhiyun #define CPLL_HZ (1500 * MHz) 18*4882a593Smuzhiyun #define NPLL_HZ (850 * MHz) 19*4882a593Smuzhiyun #define PPLL_HZ (1100 * MHz) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* RK3588 pll id */ 22*4882a593Smuzhiyun enum rk3588_pll_id { 23*4882a593Smuzhiyun B0PLL, 24*4882a593Smuzhiyun B1PLL, 25*4882a593Smuzhiyun LPLL, 26*4882a593Smuzhiyun CPLL, 27*4882a593Smuzhiyun GPLL, 28*4882a593Smuzhiyun NPLL, 29*4882a593Smuzhiyun V0PLL, 30*4882a593Smuzhiyun AUPLL, 31*4882a593Smuzhiyun PPLL, 32*4882a593Smuzhiyun PLL_COUNT, 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun struct rk3588_clk_info { 36*4882a593Smuzhiyun unsigned long id; 37*4882a593Smuzhiyun char *name; 38*4882a593Smuzhiyun bool is_cru; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun struct rk3588_clk_priv { 42*4882a593Smuzhiyun struct rk3588_cru *cru; 43*4882a593Smuzhiyun struct rk3588_grf *grf; 44*4882a593Smuzhiyun ulong ppll_hz; 45*4882a593Smuzhiyun ulong gpll_hz; 46*4882a593Smuzhiyun ulong cpll_hz; 47*4882a593Smuzhiyun ulong npll_hz; 48*4882a593Smuzhiyun ulong v0pll_hz; 49*4882a593Smuzhiyun ulong aupll_hz; 50*4882a593Smuzhiyun ulong armclk_hz; 51*4882a593Smuzhiyun ulong armclk_enter_hz; 52*4882a593Smuzhiyun ulong armclk_init_hz; 53*4882a593Smuzhiyun bool sync_kernel; 54*4882a593Smuzhiyun bool set_armclk_rate; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun struct rk3588_pll { 58*4882a593Smuzhiyun unsigned int con0; 59*4882a593Smuzhiyun unsigned int con1; 60*4882a593Smuzhiyun unsigned int con2; 61*4882a593Smuzhiyun unsigned int con3; 62*4882a593Smuzhiyun unsigned int con4; 63*4882a593Smuzhiyun unsigned int reserved0[3]; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun struct rk3588_cru { 67*4882a593Smuzhiyun struct rk3588_pll pll[18]; 68*4882a593Smuzhiyun unsigned int reserved0[16];/* Address Offset: 0x0240 */ 69*4882a593Smuzhiyun unsigned int mode_con00;/* Address Offset: 0x0280 */ 70*4882a593Smuzhiyun unsigned int reserved1[31];/* Address Offset: 0x0284 */ 71*4882a593Smuzhiyun unsigned int clksel_con[178]; /* Address Offset: 0x0300 */ 72*4882a593Smuzhiyun unsigned int reserved2[142];/* Address Offset: 0x05c8 */ 73*4882a593Smuzhiyun unsigned int clkgate_con[78];/* Address Offset: 0x0800 */ 74*4882a593Smuzhiyun unsigned int reserved3[50];/* Address Offset: 0x0938 */ 75*4882a593Smuzhiyun unsigned int softrst_con[78];/* Address Offset: 0x0400 */ 76*4882a593Smuzhiyun unsigned int reserved4[50];/* Address Offset: 0x0b38 */ 77*4882a593Smuzhiyun unsigned int glb_cnt_th;/* Address Offset: 0x0c00 */ 78*4882a593Smuzhiyun unsigned int glb_rst_st;/* Address Offset: 0x0c04 */ 79*4882a593Smuzhiyun unsigned int glb_srst_fst;/* Address Offset: 0x0c08 */ 80*4882a593Smuzhiyun unsigned int glb_srsr_snd; /* Address Offset: 0x0c0c */ 81*4882a593Smuzhiyun unsigned int glb_rst_con;/* Address Offset: 0x0c10 */ 82*4882a593Smuzhiyun unsigned int reserved5[4];/* Address Offset: 0x0c14 */ 83*4882a593Smuzhiyun unsigned int sdio_con[2];/* Address Offset: 0x0c24 */ 84*4882a593Smuzhiyun unsigned int reserved7;/* Address Offset: 0x0c2c */ 85*4882a593Smuzhiyun unsigned int sdmmc_con[2];/* Address Offset: 0x0c30 */ 86*4882a593Smuzhiyun unsigned int reserved8[48562];/* Address Offset: 0x0c38 */ 87*4882a593Smuzhiyun unsigned int pmuclksel_con[21]; /* Address Offset: 0x0100 */ 88*4882a593Smuzhiyun unsigned int reserved9[299];/* Address Offset: 0x0c38 */ 89*4882a593Smuzhiyun unsigned int pmuclkgate_con[9]; /* Address Offset: 0x0100 */ 90*4882a593Smuzhiyun }; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun check_member(rk3588_cru, mode_con00, 0x280); 93*4882a593Smuzhiyun check_member(rk3588_cru, pmuclksel_con[1], 0x30304); 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun struct pll_rate_table { 96*4882a593Smuzhiyun unsigned long rate; 97*4882a593Smuzhiyun unsigned int m; 98*4882a593Smuzhiyun unsigned int p; 99*4882a593Smuzhiyun unsigned int s; 100*4882a593Smuzhiyun unsigned int k; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define RK3588_PLL_CON(x) ((x) * 0x4) 104*4882a593Smuzhiyun #define RK3588_MODE_CON 0x280 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define RK3588_PHP_CRU_BASE 0x8000 107*4882a593Smuzhiyun #define RK3588_PMU_CRU_BASE 0x30000 108*4882a593Smuzhiyun #define RK3588_BIGCORE0_CRU_BASE 0x50000 109*4882a593Smuzhiyun #define RK3588_BIGCORE1_CRU_BASE 0x52000 110*4882a593Smuzhiyun #define RK3588_DSU_CRU_BASE 0x58000 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define RK3588_PLL_CON(x) ((x) * 0x4) 113*4882a593Smuzhiyun #define RK3588_MODE_CON0 0x280 114*4882a593Smuzhiyun #define RK3588_CLKSEL_CON(x) ((x) * 0x4 + 0x300) 115*4882a593Smuzhiyun #define RK3588_CLKGATE_CON(x) ((x) * 0x4 + 0x800) 116*4882a593Smuzhiyun #define RK3588_SOFTRST_CON(x) ((x) * 0x4 + 0xa00) 117*4882a593Smuzhiyun #define RK3588_GLB_CNT_TH 0xc00 118*4882a593Smuzhiyun #define RK3588_GLB_SRST_FST 0xc08 119*4882a593Smuzhiyun #define RK3588_GLB_SRST_SND 0xc0c 120*4882a593Smuzhiyun #define RK3588_GLB_RST_CON 0xc10 121*4882a593Smuzhiyun #define RK3588_GLB_RST_ST 0xc04 122*4882a593Smuzhiyun #define RK3588_SDIO_CON0 0xC24 123*4882a593Smuzhiyun #define RK3588_SDIO_CON1 0xC28 124*4882a593Smuzhiyun #define RK3588_SDMMC_CON0 0xC30 125*4882a593Smuzhiyun #define RK3588_SDMMC_CON1 0xC34 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #define RK3588_PHP_CLKGATE_CON(x) ((x) * 0x4 + RK3588_PHP_CRU_BASE + 0x800) 128*4882a593Smuzhiyun #define RK3588_PHP_SOFTRST_CON(x) ((x) * 0x4 + RK3588_PHP_CRU_BASE + 0xa00) 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #define RK3588_PMU_PLL_CON(x) ((x) * 0x4 + RK3588_PHP_CRU_BASE) 131*4882a593Smuzhiyun #define RK3588_PMU_CLKSEL_CON(x) ((x) * 0x4 + RK3588_PMU_CRU_BASE + 0x300) 132*4882a593Smuzhiyun #define RK3588_PMU_CLKGATE_CON(x) ((x) * 0x4 + RK3588_PMU_CRU_BASE + 0x800) 133*4882a593Smuzhiyun #define RK3588_PMU_SOFTRST_CON(x) ((x) * 0x4 + RK3588_PMU_CRU_BASE + 0xa00) 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun #define RK3588_B0_PLL_CON(x) ((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE) 136*4882a593Smuzhiyun #define RK3588_B0_PLL_MODE_CON (RK3588_BIGCORE0_CRU_BASE + 0x280) 137*4882a593Smuzhiyun #define RK3588_BIGCORE0_CLKSEL_CON(x) ((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0x300) 138*4882a593Smuzhiyun #define RK3588_BIGCORE0_CLKGATE_CON(x) ((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0x800) 139*4882a593Smuzhiyun #define RK3588_BIGCORE0_SOFTRST_CON(x) ((x) * 0x4 + RK3588_BIGCORE0_CRU_BASE + 0xa00) 140*4882a593Smuzhiyun #define RK3588_B1_PLL_CON(x) ((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE) 141*4882a593Smuzhiyun #define RK3588_B1_PLL_MODE_CON (RK3588_BIGCORE1_CRU_BASE + 0x280) 142*4882a593Smuzhiyun #define RK3588_BIGCORE1_CLKSEL_CON(x) ((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0x300) 143*4882a593Smuzhiyun #define RK3588_BIGCORE1_CLKGATE_CON(x) ((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0x800) 144*4882a593Smuzhiyun #define RK3588_BIGCORE1_SOFTRST_CON(x) ((x) * 0x4 + RK3588_BIGCORE1_CRU_BASE + 0xa00) 145*4882a593Smuzhiyun #define RK3588_LPLL_CON(x) ((x) * 0x4 + RK3588_DSU_CRU_BASE) 146*4882a593Smuzhiyun #define RK3588_LPLL_MODE_CON (RK3588_DSU_CRU_BASE + 0x280) 147*4882a593Smuzhiyun #define RK3588_DSU_CLKSEL_CON(x) ((x) * 0x4 + RK3588_DSU_CRU_BASE + 0x300) 148*4882a593Smuzhiyun #define RK3588_DSU_CLKGATE_CON(x) ((x) * 0x4 + RK3588_DSU_CRU_BASE + 0x800) 149*4882a593Smuzhiyun #define RK3588_DSU_SOFTRST_CON(x) ((x) * 0x4 + RK3588_DSU_CRU_BASE + 0xa00) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun enum { 152*4882a593Smuzhiyun /* CRU_CLK_SEL8_CON */ 153*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_SRC_SEL_SHIFT = 14, 154*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_SRC_SEL_MASK = 1 << ACLK_LOW_TOP_ROOT_SRC_SEL_SHIFT, 155*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_SRC_SEL_GPLL = 0, 156*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_SRC_SEL_CPLL, 157*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_DIV_SHIFT = 9, 158*4882a593Smuzhiyun ACLK_LOW_TOP_ROOT_DIV_MASK = 0x1f << ACLK_LOW_TOP_ROOT_DIV_SHIFT, 159*4882a593Smuzhiyun PCLK_TOP_ROOT_SEL_SHIFT = 7, 160*4882a593Smuzhiyun PCLK_TOP_ROOT_SEL_MASK = 3 << PCLK_TOP_ROOT_SEL_SHIFT, 161*4882a593Smuzhiyun PCLK_TOP_ROOT_SEL_100M = 0, 162*4882a593Smuzhiyun PCLK_TOP_ROOT_SEL_50M, 163*4882a593Smuzhiyun PCLK_TOP_ROOT_SEL_24M, 164*4882a593Smuzhiyun ACLK_TOP_ROOT_SRC_SEL_SHIFT = 5, 165*4882a593Smuzhiyun ACLK_TOP_ROOT_SRC_SEL_MASK = 3 << ACLK_TOP_ROOT_SRC_SEL_SHIFT, 166*4882a593Smuzhiyun ACLK_TOP_ROOT_SRC_SEL_GPLL = 0, 167*4882a593Smuzhiyun ACLK_TOP_ROOT_SRC_SEL_CPLL, 168*4882a593Smuzhiyun ACLK_TOP_ROOT_SRC_SEL_AUPLL, 169*4882a593Smuzhiyun ACLK_TOP_ROOT_DIV_SHIFT = 0, 170*4882a593Smuzhiyun ACLK_TOP_ROOT_DIV_MASK = 0x1f << ACLK_TOP_ROOT_DIV_SHIFT, 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun /* CRU_CLK_SEL9_CON */ 173*4882a593Smuzhiyun ACLK_TOP_S400_SEL_SHIFT = 8, 174*4882a593Smuzhiyun ACLK_TOP_S400_SEL_MASK = 3 << ACLK_TOP_S400_SEL_SHIFT, 175*4882a593Smuzhiyun ACLK_TOP_S400_SEL_400M = 0, 176*4882a593Smuzhiyun ACLK_TOP_S400_SEL_200M, 177*4882a593Smuzhiyun ACLK_TOP_S200_SEL_SHIFT = 6, 178*4882a593Smuzhiyun ACLK_TOP_S200_SEL_MASK = 3 << ACLK_TOP_S200_SEL_SHIFT, 179*4882a593Smuzhiyun ACLK_TOP_S200_SEL_200M = 0, 180*4882a593Smuzhiyun ACLK_TOP_S200_SEL_100M, 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* CRU_CLK_SEL38_CON */ 183*4882a593Smuzhiyun CLK_I2C8_SEL_SHIFT = 13, 184*4882a593Smuzhiyun CLK_I2C8_SEL_MASK = 1 << CLK_I2C8_SEL_SHIFT, 185*4882a593Smuzhiyun CLK_I2C7_SEL_SHIFT = 12, 186*4882a593Smuzhiyun CLK_I2C7_SEL_MASK = 1 << CLK_I2C7_SEL_SHIFT, 187*4882a593Smuzhiyun CLK_I2C6_SEL_SHIFT = 11, 188*4882a593Smuzhiyun CLK_I2C6_SEL_MASK = 1 << CLK_I2C6_SEL_SHIFT, 189*4882a593Smuzhiyun CLK_I2C5_SEL_SHIFT = 10, 190*4882a593Smuzhiyun CLK_I2C5_SEL_MASK = 1 << CLK_I2C5_SEL_SHIFT, 191*4882a593Smuzhiyun CLK_I2C4_SEL_SHIFT = 9, 192*4882a593Smuzhiyun CLK_I2C4_SEL_MASK = 1 << CLK_I2C4_SEL_SHIFT, 193*4882a593Smuzhiyun CLK_I2C3_SEL_SHIFT = 8, 194*4882a593Smuzhiyun CLK_I2C3_SEL_MASK = 1 << CLK_I2C3_SEL_SHIFT, 195*4882a593Smuzhiyun CLK_I2C2_SEL_SHIFT = 7, 196*4882a593Smuzhiyun CLK_I2C2_SEL_MASK = 1 << CLK_I2C2_SEL_SHIFT, 197*4882a593Smuzhiyun CLK_I2C1_SEL_SHIFT = 6, 198*4882a593Smuzhiyun CLK_I2C1_SEL_MASK = 1 << CLK_I2C1_SEL_SHIFT, 199*4882a593Smuzhiyun ACLK_BUS_ROOT_SEL_SHIFT = 5, 200*4882a593Smuzhiyun ACLK_BUS_ROOT_SEL_MASK = 3 << ACLK_BUS_ROOT_SEL_SHIFT, 201*4882a593Smuzhiyun ACLK_BUS_ROOT_SEL_GPLL = 0, 202*4882a593Smuzhiyun ACLK_BUS_ROOT_SEL_CPLL, 203*4882a593Smuzhiyun ACLK_BUS_ROOT_DIV_SHIFT = 0, 204*4882a593Smuzhiyun ACLK_BUS_ROOT_DIV_MASK = 0x1f << ACLK_BUS_ROOT_DIV_SHIFT, 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun /* CRU_CLK_SEL40_CON */ 207*4882a593Smuzhiyun CLK_SARADC_SEL_SHIFT = 14, 208*4882a593Smuzhiyun CLK_SARADC_SEL_MASK = 0x1 << CLK_SARADC_SEL_SHIFT, 209*4882a593Smuzhiyun CLK_SARADC_SEL_GPLL = 0, 210*4882a593Smuzhiyun CLK_SARADC_SEL_24M, 211*4882a593Smuzhiyun CLK_SARADC_DIV_SHIFT = 6, 212*4882a593Smuzhiyun CLK_SARADC_DIV_MASK = 0xff << CLK_SARADC_DIV_SHIFT, 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun /* CRU_CLK_SEL41_CON */ 215*4882a593Smuzhiyun CLK_UART_SRC_SEL_SHIFT = 14, 216*4882a593Smuzhiyun CLK_UART_SRC_SEL_MASK = 0x1 << CLK_UART_SRC_SEL_SHIFT, 217*4882a593Smuzhiyun CLK_UART_SRC_SEL_GPLL = 0, 218*4882a593Smuzhiyun CLK_UART_SRC_SEL_CPLL, 219*4882a593Smuzhiyun CLK_UART_SRC_DIV_SHIFT = 9, 220*4882a593Smuzhiyun CLK_UART_SRC_DIV_MASK = 0x1f << CLK_UART_SRC_DIV_SHIFT, 221*4882a593Smuzhiyun CLK_TSADC_SEL_SHIFT = 8, 222*4882a593Smuzhiyun CLK_TSADC_SEL_MASK = 0x1 << CLK_TSADC_SEL_SHIFT, 223*4882a593Smuzhiyun CLK_TSADC_SEL_GPLL = 0, 224*4882a593Smuzhiyun CLK_TSADC_SEL_24M, 225*4882a593Smuzhiyun CLK_TSADC_DIV_SHIFT = 0, 226*4882a593Smuzhiyun CLK_TSADC_DIV_MASK = 0xff << CLK_TSADC_DIV_SHIFT, 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun /* CRU_CLK_SEL42_CON */ 229*4882a593Smuzhiyun CLK_UART_FRAC_NUMERATOR_SHIFT = 16, 230*4882a593Smuzhiyun CLK_UART_FRAC_NUMERATOR_MASK = 0xffff << 16, 231*4882a593Smuzhiyun CLK_UART_FRAC_DENOMINATOR_SHIFT = 0, 232*4882a593Smuzhiyun CLK_UART_FRAC_DENOMINATOR_MASK = 0xffff, 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /* CRU_CLK_SEL43_CON */ 235*4882a593Smuzhiyun CLK_UART_SEL_SHIFT = 0, 236*4882a593Smuzhiyun CLK_UART_SEL_MASK = 0x3 << CLK_UART_SEL_SHIFT, 237*4882a593Smuzhiyun CLK_UART_SEL_SRC = 0, 238*4882a593Smuzhiyun CLK_UART_SEL_FRAC, 239*4882a593Smuzhiyun CLK_UART_SEL_XIN24M, 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun /* CRU_CLK_SEL59_CON */ 242*4882a593Smuzhiyun CLK_PWM2_SEL_SHIFT = 14, 243*4882a593Smuzhiyun CLK_PWM2_SEL_MASK = 3 << CLK_PWM2_SEL_SHIFT, 244*4882a593Smuzhiyun CLK_PWM1_SEL_SHIFT = 12, 245*4882a593Smuzhiyun CLK_PWM1_SEL_MASK = 3 << CLK_PWM1_SEL_SHIFT, 246*4882a593Smuzhiyun CLK_SPI4_SEL_SHIFT = 10, 247*4882a593Smuzhiyun CLK_SPI4_SEL_MASK = 3 << CLK_SPI4_SEL_SHIFT, 248*4882a593Smuzhiyun CLK_SPI3_SEL_SHIFT = 8, 249*4882a593Smuzhiyun CLK_SPI3_SEL_MASK = 3 << CLK_SPI3_SEL_SHIFT, 250*4882a593Smuzhiyun CLK_SPI2_SEL_SHIFT = 6, 251*4882a593Smuzhiyun CLK_SPI2_SEL_MASK = 3 << CLK_SPI2_SEL_SHIFT, 252*4882a593Smuzhiyun CLK_SPI1_SEL_SHIFT = 4, 253*4882a593Smuzhiyun CLK_SPI1_SEL_MASK = 3 << CLK_SPI1_SEL_SHIFT, 254*4882a593Smuzhiyun CLK_SPI0_SEL_SHIFT = 2, 255*4882a593Smuzhiyun CLK_SPI0_SEL_MASK = 3 << CLK_SPI0_SEL_SHIFT, 256*4882a593Smuzhiyun CLK_SPI_SEL_200M = 0, 257*4882a593Smuzhiyun CLK_SPI_SEL_150M, 258*4882a593Smuzhiyun CLK_SPI_SEL_24M, 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /* CRU_CLK_SEL60_CON */ 261*4882a593Smuzhiyun CLK_PWM3_SEL_SHIFT = 0, 262*4882a593Smuzhiyun CLK_PWM3_SEL_MASK = 3 << CLK_PWM3_SEL_SHIFT, 263*4882a593Smuzhiyun CLK_PWM_SEL_100M = 0, 264*4882a593Smuzhiyun CLK_PWM_SEL_50M, 265*4882a593Smuzhiyun CLK_PWM_SEL_24M, 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun /* CRU_CLK_SEL62_CON */ 268*4882a593Smuzhiyun DCLK_DECOM_SEL_SHIFT = 5, 269*4882a593Smuzhiyun DCLK_DECOM_SEL_MASK = 1 << DCLK_DECOM_SEL_SHIFT, 270*4882a593Smuzhiyun DCLK_DECOM_SEL_GPLL = 0, 271*4882a593Smuzhiyun DCLK_DECOM_SEL_SPLL, 272*4882a593Smuzhiyun DCLK_DECOM_DIV_SHIFT = 0, 273*4882a593Smuzhiyun DCLK_DECOM_DIV_MASK = 0x1F << DCLK_DECOM_DIV_SHIFT, 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun /* CRU_CLK_SEL77_CON */ 276*4882a593Smuzhiyun CCLK_EMMC_SEL_SHIFT = 14, 277*4882a593Smuzhiyun CCLK_EMMC_SEL_MASK = 3 << CCLK_EMMC_SEL_SHIFT, 278*4882a593Smuzhiyun CCLK_EMMC_SEL_GPLL = 0, 279*4882a593Smuzhiyun CCLK_EMMC_SEL_CPLL, 280*4882a593Smuzhiyun CCLK_EMMC_SEL_24M, 281*4882a593Smuzhiyun CCLK_EMMC_DIV_SHIFT = 8, 282*4882a593Smuzhiyun CCLK_EMMC_DIV_MASK = 0x3f << CCLK_EMMC_DIV_SHIFT, 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun /* CRU_CLK_SEL78_CON */ 285*4882a593Smuzhiyun SCLK_SFC_SEL_SHIFT = 12, 286*4882a593Smuzhiyun SCLK_SFC_SEL_MASK = 3 << SCLK_SFC_SEL_SHIFT, 287*4882a593Smuzhiyun SCLK_SFC_SEL_GPLL = 0, 288*4882a593Smuzhiyun SCLK_SFC_SEL_CPLL, 289*4882a593Smuzhiyun SCLK_SFC_SEL_24M, 290*4882a593Smuzhiyun SCLK_SFC_DIV_SHIFT = 6, 291*4882a593Smuzhiyun SCLK_SFC_DIV_MASK = 0x3f << SCLK_SFC_DIV_SHIFT, 292*4882a593Smuzhiyun BCLK_EMMC_SEL_SHIFT = 5, 293*4882a593Smuzhiyun BCLK_EMMC_SEL_MASK = 1 << BCLK_EMMC_SEL_SHIFT, 294*4882a593Smuzhiyun BCLK_EMMC_SEL_GPLL = 0, 295*4882a593Smuzhiyun BCLK_EMMC_SEL_CPLL, 296*4882a593Smuzhiyun BCLK_EMMC_DIV_SHIFT = 0, 297*4882a593Smuzhiyun BCLK_EMMC_DIV_MASK = 0x1f << BCLK_EMMC_DIV_SHIFT, 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun /* CRU_CLK_SEL81_CON */ 300*4882a593Smuzhiyun CLK_GMAC1_PTP_SEL_SHIFT = 13, 301*4882a593Smuzhiyun CLK_GMAC1_PTP_SEL_MASK = 1 << CLK_GMAC1_PTP_SEL_SHIFT, 302*4882a593Smuzhiyun CLK_GMAC1_PTP_SEL_CPLL = 0, 303*4882a593Smuzhiyun CLK_GMAC1_PTP_DIV_SHIFT = 7, 304*4882a593Smuzhiyun CLK_GMAC1_PTP_DIV_MASK = 0x3f << CLK_GMAC1_PTP_DIV_SHIFT, 305*4882a593Smuzhiyun CLK_GMAC0_PTP_SEL_SHIFT = 6, 306*4882a593Smuzhiyun CLK_GMAC0_PTP_SEL_MASK = 1 << CLK_GMAC0_PTP_SEL_SHIFT, 307*4882a593Smuzhiyun CLK_GMAC0_PTP_SEL_CPLL = 0, 308*4882a593Smuzhiyun CLK_GMAC0_PTP_DIV_SHIFT = 0, 309*4882a593Smuzhiyun CLK_GMAC0_PTP_DIV_MASK = 0x3f << CLK_GMAC0_PTP_DIV_SHIFT, 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun /* CRU_CLK_SEL83_CON */ 312*4882a593Smuzhiyun CLK_GMAC_125M_SEL_SHIFT = 15, 313*4882a593Smuzhiyun CLK_GMAC_125M_SEL_MASK = 1 << CLK_GMAC_125M_SEL_SHIFT, 314*4882a593Smuzhiyun CLK_GMAC_125M_SEL_GPLL = 0, 315*4882a593Smuzhiyun CLK_GMAC_125M_SEL_CPLL, 316*4882a593Smuzhiyun CLK_GMAC_125M_DIV_SHIFT = 8, 317*4882a593Smuzhiyun CLK_GMAC_125M_DIV_MASK = 0x7f << CLK_GMAC_125M_DIV_SHIFT, 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun /* CRU_CLK_SEL84_CON */ 320*4882a593Smuzhiyun CLK_GMAC_50M_SEL_SHIFT = 7, 321*4882a593Smuzhiyun CLK_GMAC_50M_SEL_MASK = 1 << CLK_GMAC_50M_SEL_SHIFT, 322*4882a593Smuzhiyun CLK_GMAC_50M_SEL_GPLL = 0, 323*4882a593Smuzhiyun CLK_GMAC_50M_SEL_CPLL, 324*4882a593Smuzhiyun CLK_GMAC_50M_DIV_SHIFT = 0, 325*4882a593Smuzhiyun CLK_GMAC_50M_DIV_MASK = 0x7f << CLK_GMAC_50M_DIV_SHIFT, 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun /* CRU_CLK_SEL110_CON */ 328*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_SHIFT = 10, 329*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_MASK = 3 << HCLK_VOP_ROOT_SEL_SHIFT, 330*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_200M = 0, 331*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_100M, 332*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_50M, 333*4882a593Smuzhiyun HCLK_VOP_ROOT_SEL_24M, 334*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_SHIFT = 8, 335*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_MASK = 3 << ACLK_VOP_LOW_ROOT_SEL_SHIFT, 336*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_400M = 0, 337*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_200M, 338*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_100M, 339*4882a593Smuzhiyun ACLK_VOP_LOW_ROOT_SEL_24M, 340*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_SHIFT = 5, 341*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_MASK = 7 << ACLK_VOP_ROOT_SEL_SHIFT, 342*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_GPLL = 0, 343*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_CPLL, 344*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_AUPLL, 345*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_NPLL, 346*4882a593Smuzhiyun ACLK_VOP_ROOT_SEL_SPLL, 347*4882a593Smuzhiyun ACLK_VOP_ROOT_DIV_SHIFT = 0, 348*4882a593Smuzhiyun ACLK_VOP_ROOT_DIV_MASK = 0x1f << ACLK_VOP_ROOT_DIV_SHIFT, 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /* CRU_CLK_SEL111_CON */ 351*4882a593Smuzhiyun DCLK1_VOP_SRC_SEL_SHIFT = 14, 352*4882a593Smuzhiyun DCLK1_VOP_SRC_SEL_MASK = 3 << DCLK1_VOP_SRC_SEL_SHIFT, 353*4882a593Smuzhiyun DCLK1_VOP_SRC_DIV_SHIFT = 9, 354*4882a593Smuzhiyun DCLK1_VOP_SRC_DIV_MASK = 0x1f << DCLK1_VOP_SRC_DIV_SHIFT, 355*4882a593Smuzhiyun DCLK0_VOP_SRC_SEL_SHIFT = 7, 356*4882a593Smuzhiyun DCLK0_VOP_SRC_SEL_MASK = 3 << DCLK0_VOP_SRC_SEL_SHIFT, 357*4882a593Smuzhiyun DCLK_VOP_SRC_SEL_GPLL = 0, 358*4882a593Smuzhiyun DCLK_VOP_SRC_SEL_CPLL, 359*4882a593Smuzhiyun DCLK_VOP_SRC_SEL_V0PLL, 360*4882a593Smuzhiyun DCLK_VOP_SRC_SEL_AUPLL, 361*4882a593Smuzhiyun DCLK0_VOP_SRC_DIV_SHIFT = 0, 362*4882a593Smuzhiyun DCLK0_VOP_SRC_DIV_MASK = 0x7f << DCLK0_VOP_SRC_DIV_SHIFT, 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun /* CRU_CLK_SEL112_CON */ 365*4882a593Smuzhiyun DCLK2_VOP_SEL_SHIFT = 11, 366*4882a593Smuzhiyun DCLK2_VOP_SEL_MASK = 3 << DCLK2_VOP_SEL_SHIFT, 367*4882a593Smuzhiyun DCLK1_VOP_SEL_SHIFT = 9, 368*4882a593Smuzhiyun DCLK1_VOP_SEL_MASK = 3 << DCLK1_VOP_SEL_SHIFT, 369*4882a593Smuzhiyun DCLK0_VOP_SEL_SHIFT = 7, 370*4882a593Smuzhiyun DCLK0_VOP_SEL_MASK = 3 << DCLK0_VOP_SEL_SHIFT, 371*4882a593Smuzhiyun DCLK2_VOP_SRC_SEL_SHIFT = 5, 372*4882a593Smuzhiyun DCLK2_VOP_SRC_SEL_MASK = 3 << DCLK2_VOP_SRC_SEL_SHIFT, 373*4882a593Smuzhiyun DCLK2_VOP_SRC_DIV_SHIFT = 0, 374*4882a593Smuzhiyun DCLK2_VOP_SRC_DIV_MASK = 0x1f << DCLK2_VOP_SRC_DIV_SHIFT, 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun /* CRU_CLK_SEL113_CON */ 377*4882a593Smuzhiyun DCLK3_VOP_SRC_SEL_SHIFT = 7, 378*4882a593Smuzhiyun DCLK3_VOP_SRC_SEL_MASK = 3 << DCLK3_VOP_SRC_SEL_SHIFT, 379*4882a593Smuzhiyun DCLK3_VOP_SRC_DIV_SHIFT = 0, 380*4882a593Smuzhiyun DCLK3_VOP_SRC_DIV_MASK = 0x7f << DCLK3_VOP_SRC_DIV_SHIFT, 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun /* CRU_CLK_SEL117_CON */ 383*4882a593Smuzhiyun CLK_AUX16MHZ_1_DIV_SHIFT = 8, 384*4882a593Smuzhiyun CLK_AUX16MHZ_1_DIV_MASK = 0xff << CLK_AUX16MHZ_1_DIV_SHIFT, 385*4882a593Smuzhiyun CLK_AUX16MHZ_0_DIV_SHIFT = 0, 386*4882a593Smuzhiyun CLK_AUX16MHZ_0_DIV_MASK = 0xff << CLK_AUX16MHZ_0_DIV_SHIFT, 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun /* CRU_CLK_SEL165_CON */ 389*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_SHIFT = 6, 390*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_MASK = 3 << PCLK_CENTER_ROOT_SEL_SHIFT, 391*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_200M = 0, 392*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_100M, 393*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_50M, 394*4882a593Smuzhiyun PCLK_CENTER_ROOT_SEL_24M, 395*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_SHIFT = 4, 396*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_MASK = 3 << HCLK_CENTER_ROOT_SEL_SHIFT, 397*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_400M = 0, 398*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_200M, 399*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_100M, 400*4882a593Smuzhiyun HCLK_CENTER_ROOT_SEL_24M, 401*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_SHIFT = 2, 402*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_MASK = 3 << ACLK_CENTER_LOW_ROOT_SEL_SHIFT, 403*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_500M = 0, 404*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_250M, 405*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_100M, 406*4882a593Smuzhiyun ACLK_CENTER_LOW_ROOT_SEL_24M, 407*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_SHIFT = 0, 408*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_MASK = 3 << ACLK_CENTER_ROOT_SEL_SHIFT, 409*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_700M = 0, 410*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_400M, 411*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_200M, 412*4882a593Smuzhiyun ACLK_CENTER_ROOT_SEL_24M, 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun /* CRU_CLK_SEL172_CON */ 415*4882a593Smuzhiyun CCLK_SDIO_SRC_SEL_SHIFT = 8, 416*4882a593Smuzhiyun CCLK_SDIO_SRC_SEL_MASK = 3 << CCLK_SDIO_SRC_SEL_SHIFT, 417*4882a593Smuzhiyun CCLK_SDIO_SRC_SEL_GPLL = 0, 418*4882a593Smuzhiyun CCLK_SDIO_SRC_SEL_CPLL, 419*4882a593Smuzhiyun CCLK_SDIO_SRC_SEL_24M, 420*4882a593Smuzhiyun CCLK_SDIO_SRC_DIV_SHIFT = 2, 421*4882a593Smuzhiyun CCLK_SDIO_SRC_DIV_MASK = 0x3f << CCLK_SDIO_SRC_DIV_SHIFT, 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun /* CRU_CLK_SEL176_CON */ 424*4882a593Smuzhiyun CLK_PCIE_PHY1_PLL_DIV_SHIFT = 6, 425*4882a593Smuzhiyun CLK_PCIE_PHY1_PLL_DIV_MASK = 0x3f << CLK_PCIE_PHY1_PLL_DIV_SHIFT, 426*4882a593Smuzhiyun CLK_PCIE_PHY0_PLL_DIV_SHIFT = 0, 427*4882a593Smuzhiyun CLK_PCIE_PHY0_PLL_DIV_MASK = 0x3f << CLK_PCIE_PHY0_PLL_DIV_SHIFT, 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun /* CRU_CLK_SEL177_CON */ 430*4882a593Smuzhiyun CLK_PCIE_PHY2_REF_SEL_SHIFT = 8, 431*4882a593Smuzhiyun CLK_PCIE_PHY2_REF_SEL_MASK = 1 << CLK_PCIE_PHY2_REF_SEL_SHIFT, 432*4882a593Smuzhiyun CLK_PCIE_PHY1_REF_SEL_SHIFT = 7, 433*4882a593Smuzhiyun CLK_PCIE_PHY1_REF_SEL_MASK = 1 << CLK_PCIE_PHY1_REF_SEL_SHIFT, 434*4882a593Smuzhiyun CLK_PCIE_PHY0_REF_SEL_SHIFT = 6, 435*4882a593Smuzhiyun CLK_PCIE_PHY0_REF_SEL_MASK = 1 << CLK_PCIE_PHY0_REF_SEL_SHIFT, 436*4882a593Smuzhiyun CLK_PCIE_PHY_REF_SEL_24M = 0, 437*4882a593Smuzhiyun CLK_PCIE_PHY_REF_SEL_PPLL, 438*4882a593Smuzhiyun CLK_PCIE_PHY2_PLL_DIV_SHIFT = 0, 439*4882a593Smuzhiyun CLK_PCIE_PHY2_PLL_DIV_MASK = 0x3f << CLK_PCIE_PHY2_PLL_DIV_SHIFT, 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun /* PMUCRU_CLK_SEL2_CON */ 442*4882a593Smuzhiyun CLK_PMU1PWM_SEL_SHIFT = 9, 443*4882a593Smuzhiyun CLK_PMU1PWM_SEL_MASK = 3 << CLK_PMU1PWM_SEL_SHIFT, 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun /* PMUCRU_CLK_SEL3_CON */ 446*4882a593Smuzhiyun CLK_I2C0_SEL_SHIFT = 6, 447*4882a593Smuzhiyun CLK_I2C0_SEL_MASK = 1 << CLK_I2C0_SEL_SHIFT, 448*4882a593Smuzhiyun CLK_I2C_SEL_200M = 0, 449*4882a593Smuzhiyun CLK_I2C_SEL_100M, 450*4882a593Smuzhiyun }; 451*4882a593Smuzhiyun #endif 452