10265e00cSElaine Zhang /* SPDX-License-Identifier: GPL-2.0 */ 20265e00cSElaine Zhang /* 30265e00cSElaine Zhang * Copyright (c) 2020 Rockchip Electronics Co. Ltd. 40265e00cSElaine Zhang * Author: Elaine Zhang <zhangqing@rock-chips.com> 50265e00cSElaine Zhang */ 60265e00cSElaine Zhang 70265e00cSElaine Zhang #ifndef _ASM_ARCH_CRU_RK3576_H 80265e00cSElaine Zhang #define _ASM_ARCH_CRU_RK3576_H 90265e00cSElaine Zhang 100265e00cSElaine Zhang #define MHz 1000000 110265e00cSElaine Zhang #define KHz 1000 120265e00cSElaine Zhang #define OSC_HZ (24 * MHz) 130265e00cSElaine Zhang 140265e00cSElaine Zhang #define CPU_PVTPLL_HZ (1008 * MHz) 150265e00cSElaine Zhang #define LPLL_HZ (816 * MHz) 160265e00cSElaine Zhang #define GPLL_HZ (1188 * MHz) 170265e00cSElaine Zhang #define CPLL_HZ (1000 * MHz) 180265e00cSElaine Zhang #define PPLL_HZ (1100 * MHz) 190265e00cSElaine Zhang #define GMAC0_PTP_REFCLK_IN (24 * MHz) 200265e00cSElaine Zhang #define GMAC1_PTP_REFCLK_IN (24 * MHz) 210265e00cSElaine Zhang /* RK3576 pll id */ 220265e00cSElaine Zhang enum rk3576_pll_id { 230265e00cSElaine Zhang BPLL, 240265e00cSElaine Zhang LPLL, 250265e00cSElaine Zhang DPLL, 260265e00cSElaine Zhang CPLL, 270265e00cSElaine Zhang GPLL, 280265e00cSElaine Zhang VPLL, 290265e00cSElaine Zhang AUPLL, 300265e00cSElaine Zhang SPLL, 310265e00cSElaine Zhang PPLL, 320265e00cSElaine Zhang PLL_COUNT, 330265e00cSElaine Zhang }; 340265e00cSElaine Zhang 350265e00cSElaine Zhang struct rk3576_clk_info { 360265e00cSElaine Zhang unsigned long id; 370265e00cSElaine Zhang char *name; 380265e00cSElaine Zhang bool is_cru; 390265e00cSElaine Zhang }; 400265e00cSElaine Zhang 410265e00cSElaine Zhang struct rk3576_clk_priv { 420265e00cSElaine Zhang struct rk3576_cru *cru; 430265e00cSElaine Zhang struct rk3576_grf *grf; 440265e00cSElaine Zhang ulong ppll_hz; 450265e00cSElaine Zhang ulong gpll_hz; 460265e00cSElaine Zhang ulong cpll_hz; 470265e00cSElaine Zhang ulong vpll_hz; 480265e00cSElaine Zhang ulong aupll_hz; 490265e00cSElaine Zhang ulong spll_hz; 500265e00cSElaine Zhang ulong lpll_hz; 510265e00cSElaine Zhang ulong bpll_hz; 520265e00cSElaine Zhang ulong armclk_hz; 530265e00cSElaine Zhang ulong armclk_enter_hz; 540265e00cSElaine Zhang ulong armclk_init_hz; 550265e00cSElaine Zhang bool sync_kernel; 560265e00cSElaine Zhang bool set_armclk_rate; 570265e00cSElaine Zhang }; 580265e00cSElaine Zhang 590265e00cSElaine Zhang struct rk3576_pll { 600265e00cSElaine Zhang unsigned int con0; 610265e00cSElaine Zhang unsigned int con1; 620265e00cSElaine Zhang unsigned int con2; 630265e00cSElaine Zhang unsigned int con3; 640265e00cSElaine Zhang unsigned int con4; 650265e00cSElaine Zhang unsigned int reserved0[3]; 660265e00cSElaine Zhang }; 670265e00cSElaine Zhang 680265e00cSElaine Zhang struct rk3576_cru { 690265e00cSElaine Zhang struct rk3576_pll pll[18]; 700265e00cSElaine Zhang unsigned int reserved0[16];/* Address Offset: 0x0240 */ 710265e00cSElaine Zhang unsigned int mode_con00;/* Address Offset: 0x0280 */ 720265e00cSElaine Zhang unsigned int reserved1[31];/* Address Offset: 0x0284 */ 730265e00cSElaine Zhang unsigned int clksel_con[181]; /* Address Offset: 0x0300 */ 740265e00cSElaine Zhang unsigned int reserved2[139];/* Address Offset: 0x05d4 */ 750265e00cSElaine Zhang unsigned int clkgate_con[80];/* Address Offset: 0x0800 */ 760265e00cSElaine Zhang unsigned int reserved3[48];/* Address Offset: 0x0938 */ 770265e00cSElaine Zhang unsigned int softrst_con[80];/* Address Offset: 0x0400 */ 780265e00cSElaine Zhang unsigned int reserved4[48];/* Address Offset: 0x0b38 */ 790265e00cSElaine Zhang unsigned int glb_cnt_th;/* Address Offset: 0x0c00 */ 800265e00cSElaine Zhang unsigned int glb_rst_st;/* Address Offset: 0x0c04 */ 810265e00cSElaine Zhang unsigned int glb_srst_fst;/* Address Offset: 0x0c08 */ 820265e00cSElaine Zhang unsigned int glb_srsr_snd; /* Address Offset: 0x0c0c */ 830265e00cSElaine Zhang unsigned int glb_rst_con;/* Address Offset: 0x0c10 */ 840265e00cSElaine Zhang unsigned int reserved5[43];/* Address Offset: 0x0c14 */ 850265e00cSElaine Zhang unsigned int smoth_divfree_con[3];/* Address Offset: 0x0cc0 */ 860265e00cSElaine Zhang unsigned int fracdiv_high_con[4];/* Address Offset: 0x0ccc */ 870265e00cSElaine Zhang unsigned int reserved8[32137];/* Address Offset: 0x0c38 */ 880265e00cSElaine Zhang unsigned int pmuclksel_con[22]; /* Address Offset: 0x20300 */ 890265e00cSElaine Zhang unsigned int reserved9[298];/* Address Offset: 0x20358 */ 900265e00cSElaine Zhang unsigned int pmuclkgate_con[8]; /* Address Offset: 0x20800 */ 910265e00cSElaine Zhang unsigned int reserved10[32440];/* Address Offset: 0x20820 */ 920265e00cSElaine Zhang unsigned int litclksel_con[4]; /* Address Offset: 0x40300 */ 930265e00cSElaine Zhang }; 940265e00cSElaine Zhang 950265e00cSElaine Zhang check_member(rk3576_cru, mode_con00, 0x280); 960265e00cSElaine Zhang check_member(rk3576_cru, pmuclksel_con[1], 0x20304); 970265e00cSElaine Zhang 980265e00cSElaine Zhang struct pll_rate_table { 990265e00cSElaine Zhang unsigned long rate; 1000265e00cSElaine Zhang unsigned int m; 1010265e00cSElaine Zhang unsigned int p; 1020265e00cSElaine Zhang unsigned int s; 1030265e00cSElaine Zhang unsigned int k; 1040265e00cSElaine Zhang }; 1050265e00cSElaine Zhang 1060265e00cSElaine Zhang #define RK3576_PHP_CRU_BASE 0x8000 1070265e00cSElaine Zhang #define RK3576_PMU_CRU_BASE 0x20000 1080265e00cSElaine Zhang #define RK3576_BIGCORE_CRU_BASE 0x38000 1090265e00cSElaine Zhang #define RK3576_LITCORE_CRU_BASE 0x40000 1100265e00cSElaine Zhang #define RK3576_CCI_CRU_BASE 0x48000 1110265e00cSElaine Zhang #define RK3576_CRU_BASE 0x27200000 1120265e00cSElaine Zhang #define RK3576_SCRU_BASE 0x27214000 1130265e00cSElaine Zhang 114d38d4a65SFinley Xiao #define RK3576_BIGCORE_GRF_BASE 0x2600C000 115d38d4a65SFinley Xiao #define RK3576_LITCORE_GRF_BASE 0x2600E000 116d38d4a65SFinley Xiao #define RK3576_CCI_GRF_BASE 0x26010000 117d38d4a65SFinley Xiao 1180265e00cSElaine Zhang #define RK3576_PLL_CON(x) ((x) * 0x4) 1190265e00cSElaine Zhang #define RK3576_MODE_CON0 0x280 1200265e00cSElaine Zhang #define RK3576_BPLL_MODE_CON0 (RK3576_BIGCORE_CRU_BASE + 0x280) 1210265e00cSElaine Zhang #define RK3576_LPLL_MODE_CON0 (RK3576_LITCORE_CRU_BASE + 0x280) 1220265e00cSElaine Zhang #define RK3576_PPLL_MODE_CON0 (RK3576_PHP_CRU_BASE + 0x280) 1230265e00cSElaine Zhang #define RK3576_CLKSEL_CON(x) ((x) * 0x4 + 0x300) 1240265e00cSElaine Zhang #define RK3576_CLKGATE_CON(x) ((x) * 0x4 + 0x800) 1250265e00cSElaine Zhang #define RK3576_SOFTRST_CON(x) ((x) * 0x4 + 0xa00) 1260265e00cSElaine Zhang #define RK3576_GLB_CNT_TH 0xc00 1270265e00cSElaine Zhang #define RK3576_GLB_SRST_FST 0xc08 1280265e00cSElaine Zhang #define RK3576_GLB_SRST_SND 0xc0c 1290265e00cSElaine Zhang #define RK3576_GLB_RST_CON 0xc10 1300265e00cSElaine Zhang #define RK3576_GLB_RST_ST 0xc04 1310265e00cSElaine Zhang #define RK3576_SDIO_CON0 0xC24 1320265e00cSElaine Zhang #define RK3576_SDIO_CON1 0xC28 1330265e00cSElaine Zhang #define RK3576_SDMMC_CON0 0xC30 1340265e00cSElaine Zhang #define RK3576_SDMMC_CON1 0xC34 1350265e00cSElaine Zhang 1360265e00cSElaine Zhang #define RK3576_PHP_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x300) 1370265e00cSElaine Zhang #define RK3576_PHP_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x800) 1380265e00cSElaine Zhang #define RK3576_PHP_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0xa00) 1390265e00cSElaine Zhang 1400265e00cSElaine Zhang #define RK3576_PMU_PLL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE) 1410265e00cSElaine Zhang #define RK3576_PMU_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x300) 1420265e00cSElaine Zhang #define RK3576_PMU_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x800) 1430265e00cSElaine Zhang #define RK3576_PMU_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0xa00) 1440265e00cSElaine Zhang 1450265e00cSElaine Zhang #define RK3576_CCI_CLKSEL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x300) 1460265e00cSElaine Zhang #define RK3576_CCI_CLKGATE_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x800) 1470265e00cSElaine Zhang #define RK3576_CCI_SOFTRST_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0xa00) 1480265e00cSElaine Zhang 1490265e00cSElaine Zhang #define RK3576_BPLL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE) 1500265e00cSElaine Zhang #define RK3576_BIGCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x300) 1510265e00cSElaine Zhang #define RK3576_BIGCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x800) 1520265e00cSElaine Zhang #define RK3576_BIGCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0xa00) 1530265e00cSElaine Zhang #define RK3576_LPLL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE) 1540265e00cSElaine Zhang #define RK3576_LITCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x300) 1550265e00cSElaine Zhang #define RK3576_LITCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x800) 1560265e00cSElaine Zhang #define RK3576_LITCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0xa00) 1570265e00cSElaine Zhang 1580265e00cSElaine Zhang enum { 1590265e00cSElaine Zhang /* CRU_CLK_SEL8_CON */ 1600265e00cSElaine Zhang PCLK_TOP_SEL_SHIFT = 7, 1610265e00cSElaine Zhang PCLK_TOP_SEL_MASK = 3 << PCLK_TOP_SEL_SHIFT, 1620265e00cSElaine Zhang PCLK_TOP_SEL_100M = 0, 1630265e00cSElaine Zhang PCLK_TOP_SEL_50M, 1640265e00cSElaine Zhang PCLK_TOP_SEL_OSC, 1650265e00cSElaine Zhang 1660265e00cSElaine Zhang /* CRU_CLK_SEL9_CON */ 1670265e00cSElaine Zhang ACLK_TOP_SEL_SHIFT = 5, 1680265e00cSElaine Zhang ACLK_TOP_SEL_MASK = 3 << ACLK_TOP_SEL_SHIFT, 1690265e00cSElaine Zhang ACLK_TOP_SEL_GPLL = 0, 1700265e00cSElaine Zhang ACLK_TOP_SEL_CPLL, 1710265e00cSElaine Zhang ACLK_TOP_SEL_AUPLL, 1720265e00cSElaine Zhang ACLK_TOP_DIV_SHIFT = 0, 1730265e00cSElaine Zhang ACLK_TOP_DIV_MASK = 0x1f << ACLK_TOP_DIV_SHIFT, 1740265e00cSElaine Zhang 1750265e00cSElaine Zhang /* CRU_CLK_SEL10_CON */ 1760265e00cSElaine Zhang ACLK_TOP_MID_SEL_SHIFT = 5, 1770265e00cSElaine Zhang ACLK_TOP_MID_SEL_MASK = 1 << ACLK_TOP_MID_SEL_SHIFT, 1780265e00cSElaine Zhang ACLK_TOP_MID_SEL_GPLL = 0, 1790265e00cSElaine Zhang ACLK_TOP_MID_SEL_CPLL, 1800265e00cSElaine Zhang ACLK_TOP_MID_DIV_SHIFT = 0, 1810265e00cSElaine Zhang ACLK_TOP_MID_DIV_MASK = 0x1f << ACLK_TOP_MID_DIV_SHIFT, 1820265e00cSElaine Zhang 1830265e00cSElaine Zhang /* CRU_CLK_SEL19_CON */ 1840265e00cSElaine Zhang HCLK_TOP_SEL_SHIFT = 2, 1850265e00cSElaine Zhang HCLK_TOP_SEL_MASK = 3 << HCLK_TOP_SEL_SHIFT, 1860265e00cSElaine Zhang HCLK_TOP_SEL_200M = 0, 1870265e00cSElaine Zhang HCLK_TOP_SEL_100M, 1880265e00cSElaine Zhang HCLK_TOP_SEL_50M, 1890265e00cSElaine Zhang HCLK_TOP_SEL_OSC, 1900265e00cSElaine Zhang 1910265e00cSElaine Zhang /* CRU_CLK_SEL25_CON */ 1920265e00cSElaine Zhang CLK_UART_FRAC_NUMERATOR_SHIFT = 16, 1930265e00cSElaine Zhang CLK_UART_FRAC_NUMERATOR_MASK = 0xffff << 16, 1940265e00cSElaine Zhang CLK_UART_FRAC_DENOMINATOR_SHIFT = 0, 1950265e00cSElaine Zhang CLK_UART_FRAC_DENOMINATOR_MASK = 0xffff, 1960265e00cSElaine Zhang 1970265e00cSElaine Zhang /* CRU_CLK_SEL26_CON */ 1980265e00cSElaine Zhang CLK_UART_SRC_SEL_SHIFT = 0, 1990265e00cSElaine Zhang CLK_UART_SRC_SEL_MASK = 0x3 << CLK_UART_SRC_SEL_SHIFT, 2000265e00cSElaine Zhang CLK_UART_SRC_SEL_GPLL = 0, 2010265e00cSElaine Zhang CLK_UART_SRC_SEL_CPLL, 2020265e00cSElaine Zhang CLK_UART_SRC_SEL_AUPLL, 2030265e00cSElaine Zhang CLK_UART_SRC_SEL_OSC, 2040265e00cSElaine Zhang 2050265e00cSElaine Zhang /* CRU_CLK_SEL27_CON */ 2060265e00cSElaine Zhang CLK_UART1_SRC_SEL_SHIFT = 13, 2070265e00cSElaine Zhang CLK_UART1_SRC_SEL_MASK = 0x7 << CLK_UART1_SRC_SEL_SHIFT, 2080265e00cSElaine Zhang CLK_UART1_SRC_DIV_SHIFT = 5, 2090265e00cSElaine Zhang CLK_UART1_SRC_DIV_MASK = 0xff << CLK_UART1_SRC_DIV_SHIFT, 2100265e00cSElaine Zhang 2110265e00cSElaine Zhang /* CRU_CLK_SEL30_CON */ 2120265e00cSElaine Zhang CLK_GMAC0_125M_DIV_SHIFT = 10, 2130265e00cSElaine Zhang CLK_GMAC0_125M_DIV_MASK = 0x1f << CLK_GMAC0_125M_DIV_SHIFT, 2140265e00cSElaine Zhang 2150265e00cSElaine Zhang /* CRU_CLK_SEL31_CON */ 2160265e00cSElaine Zhang CLK_GMAC1_125M_DIV_SHIFT = 0, 2170265e00cSElaine Zhang CLK_GMAC1_125M_DIV_MASK = 0x1f << CLK_GMAC1_125M_DIV_SHIFT, 2180265e00cSElaine Zhang 219cdb92760SElaine Zhang /* CRU_CLK_SEL33_CON */ 220cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_SHIFT = 8, 221cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_MASK = 7 << REF_CLK0_OUT_PLL_SEL_SHIFT, 222cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_GPLL = 0, 223cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_CPLL, 224cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_SPLL, 225cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_AUPLL, 226cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_LPLL, 227cdb92760SElaine Zhang REF_CLK0_OUT_PLL_SEL_OSC, 228cdb92760SElaine Zhang REF_CLK0_OUT_PLL_DIV_SHIFT = 0, 229cdb92760SElaine Zhang REF_CLK0_OUT_PLL_DIV_MASK = 0xff << REF_CLK0_OUT_PLL_DIV_SHIFT, 230cdb92760SElaine Zhang 2310265e00cSElaine Zhang /* CRU_CLK_SEL55_CON */ 2320265e00cSElaine Zhang ACLK_BUS_ROOT_SEL_SHIFT = 9, 2330265e00cSElaine Zhang ACLK_BUS_ROOT_SEL_MASK = 1 << ACLK_BUS_ROOT_SEL_SHIFT, 2340265e00cSElaine Zhang ACLK_BUS_ROOT_SEL_GPLL = 0, 2350265e00cSElaine Zhang ACLK_BUS_ROOT_SEL_CPLL, 2360265e00cSElaine Zhang ACLK_BUS_ROOT_DIV_SHIFT = 4, 2370265e00cSElaine Zhang ACLK_BUS_ROOT_DIV_MASK = 0x1f << ACLK_BUS_ROOT_DIV_SHIFT, 2380265e00cSElaine Zhang PCLK_BUS_ROOT_SEL_SHIFT = 2, 2390265e00cSElaine Zhang PCLK_BUS_ROOT_SEL_MASK = 3 << PCLK_BUS_ROOT_SEL_SHIFT, 2400265e00cSElaine Zhang PCLK_BUS_ROOT_SEL_100M = 0, 2410265e00cSElaine Zhang PCLK_BUS_ROOT_SEL_50M, 2420265e00cSElaine Zhang PCLK_BUS_ROOT_SEL_OSC, 2430265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_SHIFT = 0, 2440265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_MASK = 3 << HCLK_BUS_ROOT_SEL_SHIFT, 2450265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_200M = 0, 2460265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_100M, 2470265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_50M, 2480265e00cSElaine Zhang HCLK_BUS_ROOT_SEL_OSC, 2490265e00cSElaine Zhang 2500265e00cSElaine Zhang /* CRU_CLK_SEL57_CON */ 2510265e00cSElaine Zhang CLK_I2C8_SEL_SHIFT = 14, 2520265e00cSElaine Zhang CLK_I2C8_SEL_MASK = 3 << CLK_I2C8_SEL_SHIFT, 2530265e00cSElaine Zhang CLK_I2C7_SEL_SHIFT = 12, 2540265e00cSElaine Zhang CLK_I2C7_SEL_MASK = 3 << CLK_I2C7_SEL_SHIFT, 2550265e00cSElaine Zhang CLK_I2C6_SEL_SHIFT = 10, 2560265e00cSElaine Zhang CLK_I2C6_SEL_MASK = 3 << CLK_I2C6_SEL_SHIFT, 2570265e00cSElaine Zhang CLK_I2C5_SEL_SHIFT = 8, 2580265e00cSElaine Zhang CLK_I2C5_SEL_MASK = 3 << CLK_I2C5_SEL_SHIFT, 2590265e00cSElaine Zhang CLK_I2C4_SEL_SHIFT = 6, 2600265e00cSElaine Zhang CLK_I2C4_SEL_MASK = 3 << CLK_I2C4_SEL_SHIFT, 2610265e00cSElaine Zhang CLK_I2C3_SEL_SHIFT = 4, 2620265e00cSElaine Zhang CLK_I2C3_SEL_MASK = 3 << CLK_I2C3_SEL_SHIFT, 2630265e00cSElaine Zhang CLK_I2C2_SEL_SHIFT = 2, 2640265e00cSElaine Zhang CLK_I2C2_SEL_MASK = 3 << CLK_I2C2_SEL_SHIFT, 2650265e00cSElaine Zhang CLK_I2C1_SEL_SHIFT = 0, 2660265e00cSElaine Zhang CLK_I2C1_SEL_MASK = 3 << CLK_I2C1_SEL_SHIFT, 2670265e00cSElaine Zhang CLK_I2C_SEL_200M = 0, 2680265e00cSElaine Zhang CLK_I2C_SEL_100M, 2690265e00cSElaine Zhang CLK_I2C_SEL_50M, 2700265e00cSElaine Zhang CLK_I2C_SEL_OSC, 2710265e00cSElaine Zhang 2720265e00cSElaine Zhang /* CRU_CLK_SEL58_CON */ 2730265e00cSElaine Zhang CLK_SARADC_SEL_SHIFT = 12, 2740265e00cSElaine Zhang CLK_SARADC_SEL_MASK = 0x1 << CLK_SARADC_SEL_SHIFT, 2750265e00cSElaine Zhang CLK_SARADC_SEL_GPLL = 0, 2760265e00cSElaine Zhang CLK_SARADC_SEL_OSC, 2770265e00cSElaine Zhang CLK_SARADC_DIV_SHIFT = 4, 2780265e00cSElaine Zhang CLK_SARADC_DIV_MASK = 0xff << CLK_SARADC_DIV_SHIFT, 2790265e00cSElaine Zhang CLK_I2C9_SEL_SHIFT = 0, 2800265e00cSElaine Zhang CLK_I2C9_SEL_MASK = 3 << CLK_I2C9_SEL_SHIFT, 2810265e00cSElaine Zhang 2820265e00cSElaine Zhang /* CRU_CLK_SEL59_CON */ 2830265e00cSElaine Zhang CLK_TSADC_DIV_SHIFT = 0, 2840265e00cSElaine Zhang CLK_TSADC_DIV_MASK = 0xff << CLK_TSADC_DIV_SHIFT, 2850265e00cSElaine Zhang 2860265e00cSElaine Zhang /* CRU_CLK_SEL60_CON */ 2870265e00cSElaine Zhang CLK_UART_SEL_SHIFT = 8, 2880265e00cSElaine Zhang CLK_UART_SEL_MASK = 7 << CLK_UART_SEL_SHIFT, 2890265e00cSElaine Zhang CLK_UART_SEL_GPLL = 0, 2900265e00cSElaine Zhang CLK_UART_SEL_CPLL, 2910265e00cSElaine Zhang CLK_UART_SEL_AUPLL, 2920265e00cSElaine Zhang CLK_UART_SEL_OSC, 2930265e00cSElaine Zhang CLK_UART_SEL_FRAC0, 2940265e00cSElaine Zhang CLK_UART_SEL_FRAC1, 2950265e00cSElaine Zhang CLK_UART_SEL_FRAC2, 2960265e00cSElaine Zhang CLK_UART_DIV_SHIFT = 0, 2970265e00cSElaine Zhang CLK_UART_DIV_MASK = 0xff << CLK_UART_DIV_SHIFT, 2980265e00cSElaine Zhang 2990265e00cSElaine Zhang /* CRU_CLK_SEL70_CON */ 3000265e00cSElaine Zhang CLK_SPI0_SEL_SHIFT = 13, 3010265e00cSElaine Zhang CLK_SPI0_SEL_MASK = 3 << CLK_SPI0_SEL_SHIFT, 3020265e00cSElaine Zhang CLK_SPI_SEL_200M = 0, 3030265e00cSElaine Zhang CLK_SPI_SEL_100M, 3040265e00cSElaine Zhang CLK_SPI_SEL_50M, 3050265e00cSElaine Zhang CLK_SPI_SEL_OSC, 3060265e00cSElaine Zhang 3070265e00cSElaine Zhang /* CRU_CLK_SEL71_CON */ 3080265e00cSElaine Zhang CLK_PWM1_SEL_SHIFT = 8, 3090265e00cSElaine Zhang CLK_PWM1_SEL_MASK = 3 << CLK_PWM1_SEL_SHIFT, 3100265e00cSElaine Zhang CLK_SPI4_SEL_SHIFT = 6, 3110265e00cSElaine Zhang CLK_SPI4_SEL_MASK = 3 << CLK_SPI4_SEL_SHIFT, 3120265e00cSElaine Zhang CLK_SPI3_SEL_SHIFT = 4, 3130265e00cSElaine Zhang CLK_SPI3_SEL_MASK = 3 << CLK_SPI3_SEL_SHIFT, 3140265e00cSElaine Zhang CLK_SPI2_SEL_SHIFT = 2, 3150265e00cSElaine Zhang CLK_SPI2_SEL_MASK = 3 << CLK_SPI2_SEL_SHIFT, 3160265e00cSElaine Zhang CLK_SPI1_SEL_SHIFT = 0, 3170265e00cSElaine Zhang CLK_SPI1_SEL_MASK = 3 << CLK_SPI1_SEL_SHIFT, 3180265e00cSElaine Zhang CLK_PWM_SEL_100M = 0, 3190265e00cSElaine Zhang CLK_PWM_SEL_50M, 3200265e00cSElaine Zhang CLK_PWM_SEL_OSC, 3210265e00cSElaine Zhang 322431b7b81SElaine Zhang /* CRU_CLK_SEL72_CON */ 323431b7b81SElaine Zhang DCLK_DECOM_SEL_SHIFT = 5, 324431b7b81SElaine Zhang DCLK_DECOM_SEL_MASK = 1 << DCLK_DECOM_SEL_SHIFT, 325431b7b81SElaine Zhang DCLK_DECOM_SEL_GPLL = 0, 326431b7b81SElaine Zhang DCLK_DECOM_SEL_SPLL, 327431b7b81SElaine Zhang DCLK_DECOM_DIV_SHIFT = 0, 328431b7b81SElaine Zhang DCLK_DECOM_DIV_MASK = 0x1f << DCLK_DECOM_DIV_SHIFT, 329431b7b81SElaine Zhang 3300265e00cSElaine Zhang /* CRU_CLK_SEL74_CON */ 3310265e00cSElaine Zhang CLK_PWM2_SEL_SHIFT = 6, 3320265e00cSElaine Zhang CLK_PWM2_SEL_MASK = 3 << CLK_PWM2_SEL_SHIFT, 3330265e00cSElaine Zhang 3340265e00cSElaine Zhang /* CRU_CLK_SEL89_CON */ 3350265e00cSElaine Zhang CCLK_EMMC_SEL_SHIFT = 14, 3360265e00cSElaine Zhang CCLK_EMMC_SEL_MASK = 3 << CCLK_EMMC_SEL_SHIFT, 3370265e00cSElaine Zhang CCLK_EMMC_SEL_GPLL = 0, 3380265e00cSElaine Zhang CCLK_EMMC_SEL_CPLL, 3390265e00cSElaine Zhang CCLK_EMMC_SEL_OSC, 3400265e00cSElaine Zhang CCLK_EMMC_DIV_SHIFT = 8, 3410265e00cSElaine Zhang CCLK_EMMC_DIV_MASK = 0x3f << CCLK_EMMC_DIV_SHIFT, 3420265e00cSElaine Zhang SCLK_FSPI_SEL_SHIFT = 6, 3430265e00cSElaine Zhang SCLK_FSPI_SEL_MASK = 3 << SCLK_FSPI_SEL_SHIFT, 3440265e00cSElaine Zhang SCLK_FSPI_SEL_GPLL = 0, 3450265e00cSElaine Zhang SCLK_FSPI_SEL_CPLL, 3460265e00cSElaine Zhang SCLK_FSPI_SEL_OSC, 3470265e00cSElaine Zhang SCLK_FSPI_DIV_SHIFT = 0, 3480265e00cSElaine Zhang SCLK_FSPI_DIV_MASK = 0x3f << SCLK_FSPI_DIV_SHIFT, 3490265e00cSElaine Zhang 3500265e00cSElaine Zhang /* CRU_CLK_SEL90_CON */ 3510265e00cSElaine Zhang BCLK_EMMC_SEL_SHIFT = 0, 3520265e00cSElaine Zhang BCLK_EMMC_SEL_MASK = 3 << BCLK_EMMC_SEL_SHIFT, 3530265e00cSElaine Zhang BCLK_EMMC_SEL_200M = 0, 3540265e00cSElaine Zhang BCLK_EMMC_SEL_100M, 3550265e00cSElaine Zhang BCLK_EMMC_SEL_50M, 3560265e00cSElaine Zhang BCLK_EMMC_SEL_OSC, 3570265e00cSElaine Zhang 3580265e00cSElaine Zhang /* CRU_CLK_SEL104_CON */ 3590265e00cSElaine Zhang CLK_GMAC1_PTP_SEL_SHIFT = 13, 3600265e00cSElaine Zhang CLK_GMAC1_PTP_SEL_MASK = 3 << CLK_GMAC1_PTP_SEL_SHIFT, 3610265e00cSElaine Zhang CLK_GMAC1_PTP_SEL_GPLL = 0, 3620265e00cSElaine Zhang CLK_GMAC1_PTP_SEL_CPLL, 3630265e00cSElaine Zhang CLK_GMAC1_PTP_SEL_REFIN, 3640265e00cSElaine Zhang CLK_GMAC1_PTP_DIV_SHIFT = 8, 3650265e00cSElaine Zhang CLK_GMAC1_PTP_DIV_MASK = 0x1f << CLK_GMAC1_PTP_DIV_SHIFT, 3660265e00cSElaine Zhang CCLK_SDIO_SRC_SEL_SHIFT = 6, 3670265e00cSElaine Zhang CCLK_SDIO_SRC_SEL_MASK = 3 << CCLK_SDIO_SRC_SEL_SHIFT, 3680265e00cSElaine Zhang CCLK_SDIO_SRC_SEL_GPLL = 0, 3690265e00cSElaine Zhang CCLK_SDIO_SRC_SEL_CPLL, 3700265e00cSElaine Zhang CCLK_SDIO_SRC_SEL_OSC, 3710265e00cSElaine Zhang CCLK_SDIO_SRC_DIV_SHIFT = 0, 3720265e00cSElaine Zhang CCLK_SDIO_SRC_DIV_MASK = 0x3f << CCLK_SDIO_SRC_DIV_SHIFT, 3730265e00cSElaine Zhang 3740265e00cSElaine Zhang /* CRU_CLK_SEL105_CON */ 3750265e00cSElaine Zhang CCLK_SDMMC0_SRC_SEL_SHIFT = 13, 3760265e00cSElaine Zhang CCLK_SDMMC0_SRC_SEL_MASK = 3 << CCLK_SDMMC0_SRC_SEL_SHIFT, 3770265e00cSElaine Zhang CCLK_SDMMC0_SRC_SEL_GPLL = 0, 3780265e00cSElaine Zhang CCLK_SDMMC0_SRC_SEL_CPLL, 3790265e00cSElaine Zhang CCLK_SDMMC0_SRC_SEL_OSC, 3800265e00cSElaine Zhang CCLK_SDMMC0_SRC_DIV_SHIFT = 7, 3810265e00cSElaine Zhang CCLK_SDMMC0_SRC_DIV_MASK = 0x3f << CCLK_SDMMC0_SRC_DIV_SHIFT, 3820265e00cSElaine Zhang CLK_GMAC0_PTP_SEL_SHIFT = 5, 3830265e00cSElaine Zhang CLK_GMAC0_PTP_SEL_MASK = 3 << CLK_GMAC0_PTP_SEL_SHIFT, 3840265e00cSElaine Zhang CLK_GMAC0_PTP_SEL_GPLL = 0, 3850265e00cSElaine Zhang CLK_GMAC0_PTP_SEL_CPLL, 3860265e00cSElaine Zhang CLK_GMAC0_PTP_SEL_REFIN, 3870265e00cSElaine Zhang CLK_GMAC0_PTP_DIV_SHIFT = 0, 3880265e00cSElaine Zhang CLK_GMAC0_PTP_DIV_MASK = 0x1f << CLK_GMAC0_PTP_DIV_SHIFT, 3890265e00cSElaine Zhang 3900265e00cSElaine Zhang /* CRU_CLK_SEL123_CON */ 3910265e00cSElaine Zhang DCLK_EBC_SEL_SHIFT = 12, 3920265e00cSElaine Zhang DCLK_EBC_SEL_MASK = 7 << DCLK_EBC_SEL_SHIFT, 3930265e00cSElaine Zhang DCLK_EBC_SEL_GPLL = 0, 3940265e00cSElaine Zhang DCLK_EBC_SEL_CPLL, 3950265e00cSElaine Zhang DCLK_EBC_SEL_VPLL, 3960265e00cSElaine Zhang DCLK_EBC_SEL_AUPLL, 3970265e00cSElaine Zhang DCLK_EBC_SEL_LPLL, 3980265e00cSElaine Zhang DCLK_EBC_SEL_FRAC_SRC, 3990265e00cSElaine Zhang DCLK_EBC_SEL_OSC, 4000265e00cSElaine Zhang DCLK_EBC_DIV_SHIFT = 3, 4010265e00cSElaine Zhang DCLK_EBC_DIV_MASK = 0x1ff << DCLK_EBC_DIV_SHIFT, 4020265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_SHIFT = 0, 4030265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_MASK = 7 << DCLK_EBC_FRAC_SRC_SEL_SHIFT, 4040265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_GPLL = 0, 4050265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_CPLL, 4060265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_VPLL, 4070265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_AUPLL, 4080265e00cSElaine Zhang DCLK_EBC_FRAC_SRC_SEL_OSC, 4090265e00cSElaine Zhang 4100265e00cSElaine Zhang /* CRU_CLK_SEL144_CON */ 4110265e00cSElaine Zhang PCLK_VOP_ROOT_SEL_SHIFT = 12, 4120265e00cSElaine Zhang PCLK_VOP_ROOT_SEL_MASK = 3 << PCLK_VOP_ROOT_SEL_SHIFT, 4130265e00cSElaine Zhang PCLK_VOP_ROOT_SEL_100M = 0, 4140265e00cSElaine Zhang PCLK_VOP_ROOT_SEL_50M, 4150265e00cSElaine Zhang PCLK_VOP_ROOT_SEL_OSC, 4160265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_SHIFT = 10, 4170265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_MASK = 3 << HCLK_VOP_ROOT_SEL_SHIFT, 4180265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_200M = 0, 4190265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_100M, 4200265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_50M, 4210265e00cSElaine Zhang HCLK_VOP_ROOT_SEL_OSC, 4220265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_SHIFT = 5, 4230265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_MASK = 7 << ACLK_VOP_ROOT_SEL_SHIFT, 4240265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_GPLL = 0, 4250265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_CPLL, 4260265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_AUPLL, 4270265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_SPLL, 4280265e00cSElaine Zhang ACLK_VOP_ROOT_SEL_LPLL, 4290265e00cSElaine Zhang ACLK_VOP_ROOT_DIV_SHIFT = 0, 4300265e00cSElaine Zhang ACLK_VOP_ROOT_DIV_MASK = 0x1f << ACLK_VOP_ROOT_DIV_SHIFT, 4310265e00cSElaine Zhang 4320265e00cSElaine Zhang /* CRU_CLK_SEL145_CON */ 4330265e00cSElaine Zhang DCLK0_VOP_SRC_SEL_SHIFT = 8, 4340265e00cSElaine Zhang DCLK0_VOP_SRC_SEL_MASK = 7 << DCLK0_VOP_SRC_SEL_SHIFT, 4350265e00cSElaine Zhang DCLK_VOP_SRC_SEL_GPLL = 0, 4360265e00cSElaine Zhang DCLK_VOP_SRC_SEL_CPLL, 4370265e00cSElaine Zhang DCLK_VOP_SRC_SEL_VPLL, 4380265e00cSElaine Zhang DCLK_VOP_SRC_SEL_BPLL, 4390265e00cSElaine Zhang DCLK_VOP_SRC_SEL_LPLL, 4400265e00cSElaine Zhang DCLK0_VOP_SRC_DIV_SHIFT = 0, 4410265e00cSElaine Zhang DCLK0_VOP_SRC_DIV_MASK = 0xff << DCLK0_VOP_SRC_DIV_SHIFT, 4420265e00cSElaine Zhang 4430265e00cSElaine Zhang /* CRU_CLK_SEL147_CON */ 4440265e00cSElaine Zhang DCLK2_VOP_SEL_SHIFT = 13, 4450265e00cSElaine Zhang DCLK2_VOP_SEL_MASK = 1 << DCLK2_VOP_SEL_SHIFT, 4460265e00cSElaine Zhang DCLK1_VOP_SEL_SHIFT = 12, 4470265e00cSElaine Zhang DCLK1_VOP_SEL_MASK = 1 << DCLK1_VOP_SEL_SHIFT, 4480265e00cSElaine Zhang DCLK0_VOP_SEL_SHIFT = 11, 4490265e00cSElaine Zhang DCLK0_VOP_SEL_MASK = 1 << DCLK0_VOP_SEL_SHIFT, 4500265e00cSElaine Zhang 4510265e00cSElaine Zhang /* CRU_CLK_SEL149_CON */ 4520265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_SHIFT = 5, 4530265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_MASK = 3 << ACLK_VO0_ROOT_SEL_SHIFT, 4540265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_GPLL = 0, 4550265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_CPLL, 4560265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_LPLL, 4570265e00cSElaine Zhang ACLK_VO0_ROOT_SEL_BPLL, 4580265e00cSElaine Zhang ACLK_VO0_ROOT_DIV_SHIFT = 0, 4590265e00cSElaine Zhang ACLK_VO0_ROOT_DIV_MASK = 0x1f << ACLK_VO0_ROOT_DIV_SHIFT, 4600265e00cSElaine Zhang 4610265e00cSElaine Zhang /* CRU_CLK_SEL151_CON */ 4620265e00cSElaine Zhang CLK_DSIHOST0_SEL_SHIFT = 7, 4630265e00cSElaine Zhang CLK_DSIHOST0_SEL_MASK = 7 << CLK_DSIHOST0_SEL_SHIFT, 4640265e00cSElaine Zhang CLK_DSIHOST0_SEL_GPLL = 0, 4650265e00cSElaine Zhang CLK_DSIHOST0_SEL_CPLL, 4660265e00cSElaine Zhang CLK_DSIHOST0_SEL_SPLL, 4670265e00cSElaine Zhang CLK_DSIHOST0_SEL_VPLL, 4680265e00cSElaine Zhang CLK_DSIHOST0_SEL_BPLL, 4690265e00cSElaine Zhang CLK_DSIHOST0_SEL_LPLL, 4700265e00cSElaine Zhang CLK_DSIHOST0_DIV_SHIFT = 0, 4710265e00cSElaine Zhang CLK_DSIHOST0_DIV_MASK = 0x7f << CLK_DSIHOST0_DIV_SHIFT, 4720265e00cSElaine Zhang 4730265e00cSElaine Zhang /* PMUCRU_CLK_SEL5_CON */ 4740265e00cSElaine Zhang CLK_PMU1PWM_SEL_SHIFT = 2, 4750265e00cSElaine Zhang CLK_PMU1PWM_SEL_MASK = 3 << CLK_PMU1PWM_SEL_SHIFT, 4760265e00cSElaine Zhang 4770265e00cSElaine Zhang /* PMUCRU_CLK_SEL6_CON */ 4780265e00cSElaine Zhang CLK_I2C0_SEL_SHIFT = 7, 4790265e00cSElaine Zhang CLK_I2C0_SEL_MASK = 3 << CLK_I2C0_SEL_SHIFT, 4800265e00cSElaine Zhang 4810265e00cSElaine Zhang /* PMUCRU_CLK_SEL8_CON */ 4820265e00cSElaine Zhang CLK_UART1_SEL_SHIFT = 0, 4830265e00cSElaine Zhang CLK_UART1_SEL_MASK = 1 << CLK_UART1_SEL_SHIFT, 4840265e00cSElaine Zhang CLK_UART1_SEL_TOP = 0, 4850265e00cSElaine Zhang CLK_UART1_SEL_OSC, 4860265e00cSElaine Zhang 4870265e00cSElaine Zhang /* LITCRU_CLK_SEL0_CON */ 4880265e00cSElaine Zhang CLK_LITCORE_SEL_SHIFT = 12, 4890265e00cSElaine Zhang CLK_LITCORE_SEL_MASK = 3 << CLK_LITCORE_SEL_SHIFT, 4900265e00cSElaine Zhang CLK_LITCORE_SEL_LPLL = 0, 4910265e00cSElaine Zhang CLK_LITCORE_SEL_GPLL, 4920265e00cSElaine Zhang CLK_LITCORE_SEL_PVTPLL, 4930265e00cSElaine Zhang CLK_LITCORE_DIV_SHIFT = 7, 4940265e00cSElaine Zhang CLK_LITCORE_DIV_MASK = 0x1f << CLK_LITCORE_DIV_SHIFT, 4950265e00cSElaine Zhang 496*5c6e0812SElaine Zhang /* BIGCRU_CLK_SEL1_CON */ 497*5c6e0812SElaine Zhang CLK_BIGCORE_SEL_SHIFT = 12, 498*5c6e0812SElaine Zhang CLK_BIGCORE_SEL_MASK = 3 << CLK_BIGCORE_SEL_SHIFT, 499*5c6e0812SElaine Zhang CLK_BIGCORE_SEL_LPLL = 0, 500*5c6e0812SElaine Zhang CLK_BIGCORE_SEL_GPLL, 501*5c6e0812SElaine Zhang CLK_BIGCORE_SEL_PVTPLL, 502*5c6e0812SElaine Zhang CLK_BIGCORE_DIV_SHIFT = 7, 503*5c6e0812SElaine Zhang CLK_BIGCORE_DIV_MASK = 0x1f << CLK_BIGCORE_DIV_SHIFT, 5040265e00cSElaine Zhang }; 5050265e00cSElaine Zhang #endif 506