1a60961a3SKever Yang /* 2a60961a3SKever Yang * (C) Copyright 2017 Rockchip Electronics Co., Ltd. 3a60961a3SKever Yang * 4a60961a3SKever Yang * SPDX-License-Identifier: GPL-2.0+ 5a60961a3SKever Yang */ 6a60961a3SKever Yang #ifndef _ASM_ARCH_CRU_px30_H 7a60961a3SKever Yang #define _ASM_ARCH_CRU_px30_H 8a60961a3SKever Yang 9a60961a3SKever Yang #include <common.h> 10a60961a3SKever Yang 11a60961a3SKever Yang #define MHz 1000000 1230f1f38dSFinley Xiao #define KHz 1000 13a60961a3SKever Yang #define OSC_HZ (24 * MHz) 14a60961a3SKever Yang 15dd472d4fSFinley Xiao #define APLL_HZ (600 * MHz) 16fe784db3SFinley Xiao #define GPLL_HZ (1200 * MHz) 1745484bdcSFinley Xiao #define NPLL_HZ (1188 * MHz) 18fe784db3SFinley Xiao #define ACLK_BUS_HZ (200 * MHz) 19fe784db3SFinley Xiao #define HCLK_BUS_HZ (150 * MHz) 20fe784db3SFinley Xiao #define PCLK_BUS_HZ (100 * MHz) 21fe784db3SFinley Xiao #define ACLK_PERI_HZ (200 * MHz) 22fe784db3SFinley Xiao #define HCLK_PERI_HZ (150 * MHz) 23fe784db3SFinley Xiao #define PCLK_PMU_HZ (100 * MHz) 24a60961a3SKever Yang 25db235eb5SFinley Xiao /* PX30 pll id */ 26db235eb5SFinley Xiao enum px30_pll_id { 27db235eb5SFinley Xiao APLL, 28db235eb5SFinley Xiao DPLL, 29db235eb5SFinley Xiao CPLL, 30db235eb5SFinley Xiao NPLL, 31db235eb5SFinley Xiao GPLL, 32db235eb5SFinley Xiao PLL_COUNT, 33db235eb5SFinley Xiao }; 34db235eb5SFinley Xiao 357a1915c0SFinley Xiao struct px30_clk_info { 367a1915c0SFinley Xiao unsigned long id; 377a1915c0SFinley Xiao char *name; 387a1915c0SFinley Xiao bool is_cru; 397a1915c0SFinley Xiao }; 407a1915c0SFinley Xiao 41cefa5186SFinley Xiao /* Private data for the clock driver - used by rockchip_get_cru() */ 42cefa5186SFinley Xiao struct px30_clk_priv { 43cefa5186SFinley Xiao struct px30_cru *cru; 44cefa5186SFinley Xiao ulong gpll_hz; 4537428b92SFinley Xiao ulong armclk_hz; 46dfce0096SElaine Zhang ulong armclk_enter_hz; 47dfce0096SElaine Zhang ulong armclk_init_hz; 48dfce0096SElaine Zhang bool sync_kernel; 49dfce0096SElaine Zhang bool set_armclk_rate; 50cefa5186SFinley Xiao }; 51cefa5186SFinley Xiao 52cefa5186SFinley Xiao struct px30_pmuclk_priv { 53cefa5186SFinley Xiao struct px30_pmucru *pmucru; 54cefa5186SFinley Xiao ulong gpll_hz; 55cefa5186SFinley Xiao }; 56cefa5186SFinley Xiao 57a60961a3SKever Yang struct px30_pll { 58a60961a3SKever Yang unsigned int con0; 59a60961a3SKever Yang unsigned int con1; 60a60961a3SKever Yang unsigned int con2; 61a60961a3SKever Yang unsigned int con3; 62a60961a3SKever Yang unsigned int con4; 63a60961a3SKever Yang unsigned int reserved0[3]; 64cefa5186SFinley Xiao }; 65cefa5186SFinley Xiao 66cefa5186SFinley Xiao struct px30_cru { 67cefa5186SFinley Xiao struct px30_pll pll[4]; 68a60961a3SKever Yang unsigned int reserved1[8]; 69a60961a3SKever Yang unsigned int mode; 70a60961a3SKever Yang unsigned int misc; 71a60961a3SKever Yang unsigned int reserved2[2]; 72a60961a3SKever Yang unsigned int glb_cnt_th; 73a60961a3SKever Yang unsigned int glb_rst_st; 74a60961a3SKever Yang unsigned int glb_srst_fst; 75a60961a3SKever Yang unsigned int glb_srst_snd; 76a60961a3SKever Yang unsigned int glb_rst_con; 77a60961a3SKever Yang unsigned int reserved3[7]; 78a60961a3SKever Yang unsigned int hwffc_con0; 79a60961a3SKever Yang unsigned int reserved4; 80a60961a3SKever Yang unsigned int hwffc_th; 81a60961a3SKever Yang unsigned int hwffc_intst; 82a60961a3SKever Yang unsigned int apll_con0_s; 83a60961a3SKever Yang unsigned int apll_con1_s; 84a60961a3SKever Yang unsigned int clksel_con0_s; 85a60961a3SKever Yang unsigned int reserved5; 86a60961a3SKever Yang unsigned int clksel_con[60]; 87a60961a3SKever Yang unsigned int reserved6[4]; 88a60961a3SKever Yang unsigned int clkgate_con[18]; 89a60961a3SKever Yang unsigned int reserved7[(0x280 - 0x244) / 4 - 1]; 90a60961a3SKever Yang unsigned int ssgtbl[32]; 91a60961a3SKever Yang unsigned int softrst_con[12]; 92a60961a3SKever Yang unsigned int reserved8[(0x380 - 0x32c) / 4 - 1]; 93a60961a3SKever Yang unsigned int sdmmc_con[2]; 94a60961a3SKever Yang unsigned int sdio_con[2]; 95a60961a3SKever Yang unsigned int emmc_con[2]; 96a60961a3SKever Yang unsigned int reserved9[(0x400 - 0x394) / 4 - 1]; 97a60961a3SKever Yang unsigned int autocs_con[8]; 98cefa5186SFinley Xiao }; 99cefa5186SFinley Xiao 100cefa5186SFinley Xiao check_member(px30_cru, autocs_con[7], 0x41c); 101cefa5186SFinley Xiao 102cefa5186SFinley Xiao struct px30_pmucru { 103cefa5186SFinley Xiao struct px30_pll pll; 104a60961a3SKever Yang unsigned int pmu_mode; 105cefa5186SFinley Xiao unsigned int reserved1[7]; 106a60961a3SKever Yang unsigned int pmu_clksel_con[6]; 107cefa5186SFinley Xiao unsigned int reserved2[10]; 108a60961a3SKever Yang unsigned int pmu_clkgate_con[2]; 109cefa5186SFinley Xiao unsigned int reserved3[14]; 110a60961a3SKever Yang unsigned int pmu_autocs_con[2]; 111a60961a3SKever Yang }; 112a60961a3SKever Yang 113cefa5186SFinley Xiao check_member(px30_pmucru, pmu_autocs_con[1], 0xc4); 114cefa5186SFinley Xiao 115cefa5186SFinley Xiao struct pll_rate_table { 116cefa5186SFinley Xiao unsigned long rate; 117cefa5186SFinley Xiao unsigned int fbdiv; 118cefa5186SFinley Xiao unsigned int postdiv1; 119cefa5186SFinley Xiao unsigned int refdiv; 120cefa5186SFinley Xiao unsigned int postdiv2; 121cefa5186SFinley Xiao unsigned int dsmpd; 122cefa5186SFinley Xiao unsigned int frac; 123a60961a3SKever Yang }; 124a60961a3SKever Yang 12537428b92SFinley Xiao struct cpu_rate_table { 12637428b92SFinley Xiao unsigned long rate; 12737428b92SFinley Xiao unsigned int aclk_div; 12837428b92SFinley Xiao unsigned int pclk_div; 12937428b92SFinley Xiao }; 13037428b92SFinley Xiao 131a60961a3SKever Yang enum { 132a60961a3SKever Yang /* PLLCON0*/ 133a60961a3SKever Yang PLL_BP_SHIFT = 15, 134a60961a3SKever Yang PLL_POSTDIV1_SHIFT = 12, 135a60961a3SKever Yang PLL_POSTDIV1_MASK = 7 << PLL_POSTDIV1_SHIFT, 136a60961a3SKever Yang PLL_FBDIV_SHIFT = 0, 137a60961a3SKever Yang PLL_FBDIV_MASK = 0xfff, 138a60961a3SKever Yang 139a60961a3SKever Yang /* PLLCON1 */ 140a60961a3SKever Yang PLL_PDSEL_SHIFT = 15, 141a60961a3SKever Yang PLL_PD1_SHIFT = 14, 142a60961a3SKever Yang PLL_PD_SHIFT = 13, 143a60961a3SKever Yang PLL_PD_MASK = 1 << PLL_PD_SHIFT, 144a60961a3SKever Yang PLL_DSMPD_SHIFT = 12, 145a60961a3SKever Yang PLL_DSMPD_MASK = 1 << PLL_DSMPD_SHIFT, 146a60961a3SKever Yang PLL_LOCK_STATUS_SHIFT = 10, 147a60961a3SKever Yang PLL_LOCK_STATUS_MASK = 1 << PLL_LOCK_STATUS_SHIFT, 148a60961a3SKever Yang PLL_POSTDIV2_SHIFT = 6, 149a60961a3SKever Yang PLL_POSTDIV2_MASK = 7 << PLL_POSTDIV2_SHIFT, 150a60961a3SKever Yang PLL_REFDIV_SHIFT = 0, 151a60961a3SKever Yang PLL_REFDIV_MASK = 0x3f, 152a60961a3SKever Yang 153a60961a3SKever Yang /* PLLCON2 */ 154a60961a3SKever Yang PLL_FOUT4PHASEPD_SHIFT = 27, 155a60961a3SKever Yang PLL_FOUTVCOPD_SHIFT = 26, 156a60961a3SKever Yang PLL_FOUTPOSTDIVPD_SHIFT = 25, 157a60961a3SKever Yang PLL_DACPD_SHIFT = 24, 158a60961a3SKever Yang PLL_FRAC_DIV = 0xffffff, 159a60961a3SKever Yang 160a60961a3SKever Yang /* CRU_MODE */ 161a60961a3SKever Yang PLLMUX_FROM_XIN24M = 0, 162a60961a3SKever Yang PLLMUX_FROM_PLL, 163a60961a3SKever Yang PLLMUX_FROM_RTC32K, 164a60961a3SKever Yang USBPHY480M_MODE_SHIFT = 8, 165a60961a3SKever Yang USBPHY480M_MODE_MASK = 3 << USBPHY480M_MODE_SHIFT, 166a60961a3SKever Yang NPLL_MODE_SHIFT = 6, 167a60961a3SKever Yang NPLL_MODE_MASK = 3 << NPLL_MODE_SHIFT, 168a60961a3SKever Yang DPLL_MODE_SHIFT = 4, 169a60961a3SKever Yang DPLL_MODE_MASK = 3 << DPLL_MODE_SHIFT, 170a60961a3SKever Yang CPLL_MODE_SHIFT = 2, 171a60961a3SKever Yang CPLL_MODE_MASK = 3 << CPLL_MODE_SHIFT, 172a60961a3SKever Yang APLL_MODE_SHIFT = 0, 173a60961a3SKever Yang APLL_MODE_MASK = 3 << APLL_MODE_SHIFT, 174a60961a3SKever Yang 175a60961a3SKever Yang /* CRU_CLK_SEL0_CON */ 176a60961a3SKever Yang CORE_ACLK_DIV_SHIFT = 12, 177a60961a3SKever Yang CORE_ACLK_DIV_MASK = 0x07 << CORE_ACLK_DIV_SHIFT, 178a60961a3SKever Yang CORE_DBG_DIV_SHIFT = 8, 179a60961a3SKever Yang CORE_DBG_DIV_MASK = 0x03 << CORE_DBG_DIV_SHIFT, 180a60961a3SKever Yang CORE_CLK_PLL_SEL_SHIFT = 7, 181a60961a3SKever Yang CORE_CLK_PLL_SEL_MASK = 1 << CORE_CLK_PLL_SEL_SHIFT, 182a60961a3SKever Yang CORE_CLK_PLL_SEL_APLL = 0, 183a60961a3SKever Yang CORE_CLK_PLL_SEL_GPLL, 184a60961a3SKever Yang CORE_DIV_CON_SHIFT = 0, 185a60961a3SKever Yang CORE_DIV_CON_MASK = 0x0f << CORE_DIV_CON_SHIFT, 186a60961a3SKever Yang 18730f1f38dSFinley Xiao /* CRU_CLK_SEL3_CON */ 18830f1f38dSFinley Xiao ACLK_VO_PLL_SHIFT = 6, 18930f1f38dSFinley Xiao ACLK_VO_PLL_MASK = 0x3 << ACLK_VO_PLL_SHIFT, 19030f1f38dSFinley Xiao ACLK_VO_SEL_GPLL = 0, 19130f1f38dSFinley Xiao ACLK_VO_SEL_CPLL, 19230f1f38dSFinley Xiao ACLK_VO_SEL_NPLL, 19330f1f38dSFinley Xiao ACLK_VO_DIV_SHIFT = 0, 19430f1f38dSFinley Xiao ACLK_VO_DIV_MASK = 0x1f << ACLK_VO_DIV_SHIFT, 19530f1f38dSFinley Xiao 19630f1f38dSFinley Xiao /* CRU_CLK_SEL5_CON */ 19730f1f38dSFinley Xiao DCLK_VOPB_SEL_SHIFT = 14, 19830f1f38dSFinley Xiao DCLK_VOPB_SEL_MASK = 0x3 << DCLK_VOPB_SEL_SHIFT, 19930f1f38dSFinley Xiao DCLK_VOPB_SEL_DIVOUT = 0, 20030f1f38dSFinley Xiao DCLK_VOPB_SEL_FRACOUT, 20130f1f38dSFinley Xiao DCLK_VOPB_SEL_24M, 20230f1f38dSFinley Xiao DCLK_VOPB_PLL_SEL_SHIFT = 11, 20330f1f38dSFinley Xiao DCLK_VOPB_PLL_SEL_MASK = 0x1 << DCLK_VOPB_PLL_SEL_SHIFT, 20430f1f38dSFinley Xiao DCLK_VOPB_PLL_SEL_CPLL = 0, 20530f1f38dSFinley Xiao DCLK_VOPB_PLL_SEL_NPLL, 20630f1f38dSFinley Xiao DCLK_VOPB_DIV_SHIFT = 0, 20730f1f38dSFinley Xiao DCLK_VOPB_DIV_MASK = 0xff, 20830f1f38dSFinley Xiao 209d101530aSFinley Xiao /* CRU_CLK_SEL8_CON */ 210d101530aSFinley Xiao DCLK_VOPL_SEL_SHIFT = 14, 211d101530aSFinley Xiao DCLK_VOPL_SEL_MASK = 0x3 << DCLK_VOPL_SEL_SHIFT, 212d101530aSFinley Xiao DCLK_VOPL_SEL_DIVOUT = 0, 213d101530aSFinley Xiao DCLK_VOPL_SEL_FRACOUT, 214d101530aSFinley Xiao DCLK_VOPL_SEL_24M, 215d101530aSFinley Xiao DCLK_VOPL_PLL_SEL_SHIFT = 11, 216d101530aSFinley Xiao DCLK_VOPL_PLL_SEL_MASK = 0x1 << DCLK_VOPL_PLL_SEL_SHIFT, 217c996ae8aSFinley Xiao DCLK_VOPL_PLL_SEL_NPLL = 0, 218c996ae8aSFinley Xiao DCLK_VOPL_PLL_SEL_CPLL, 219d101530aSFinley Xiao DCLK_VOPL_DIV_SHIFT = 0, 220d101530aSFinley Xiao DCLK_VOPL_DIV_MASK = 0xff, 221d101530aSFinley Xiao 222a60961a3SKever Yang /* CRU_CLK_SEL14_CON */ 223a60961a3SKever Yang PERI_PLL_SEL_SHIFT =15, 224a60961a3SKever Yang PERI_PLL_SEL_MASK = 3 << PERI_PLL_SEL_SHIFT, 225a60961a3SKever Yang PERI_PLL_GPLL = 0, 226a60961a3SKever Yang PERI_PLL_CPLL, 227a60961a3SKever Yang PERI_HCLK_DIV_SHIFT = 8, 228a60961a3SKever Yang PERI_HCLK_DIV_MASK = 0x1f << PERI_HCLK_DIV_SHIFT, 229a60961a3SKever Yang PERI_ACLK_DIV_SHIFT = 0, 230a60961a3SKever Yang PERI_ACLK_DIV_MASK = 0x1f << PERI_ACLK_DIV_SHIFT, 231a60961a3SKever Yang 232cefa5186SFinley Xiao /* CRU_CLKSEL15_CON */ 233cefa5186SFinley Xiao NANDC_CLK_SEL_SHIFT = 15, 234cefa5186SFinley Xiao NANDC_CLK_SEL_MASK = 0x1 << NANDC_CLK_SEL_SHIFT, 235cefa5186SFinley Xiao NANDC_CLK_SEL_NANDC = 0, 236cefa5186SFinley Xiao NANDC_CLK_SEL_NANDC_DIV50, 237cefa5186SFinley Xiao NANDC_DIV50_SHIFT = 8, 238cefa5186SFinley Xiao NANDC_DIV50_MASK = 0x1f << NANDC_DIV50_SHIFT, 239cefa5186SFinley Xiao NANDC_PLL_SHIFT = 6, 240cefa5186SFinley Xiao NANDC_PLL_MASK = 0x3 << NANDC_PLL_SHIFT, 241cefa5186SFinley Xiao NANDC_SEL_GPLL = 0, 242cefa5186SFinley Xiao NANDC_SEL_CPLL, 243cefa5186SFinley Xiao NANDC_SEL_NPLL, 244cefa5186SFinley Xiao NANDC_DIV_SHIFT = 0, 245cefa5186SFinley Xiao NANDC_DIV_MASK = 0x1f << NANDC_DIV_SHIFT, 246cefa5186SFinley Xiao 247a60961a3SKever Yang /* CRU_CLKSEL20_CON */ 248a60961a3SKever Yang EMMC_PLL_SHIFT = 14, 249a60961a3SKever Yang EMMC_PLL_MASK = 3 << EMMC_PLL_SHIFT, 250a60961a3SKever Yang EMMC_SEL_GPLL = 0, 251a60961a3SKever Yang EMMC_SEL_CPLL, 252a60961a3SKever Yang EMMC_SEL_NPLL, 253a60961a3SKever Yang EMMC_SEL_24M, 254a60961a3SKever Yang EMMC_DIV_SHIFT = 0, 255a60961a3SKever Yang EMMC_DIV_MASK = 0xff << EMMC_DIV_SHIFT, 256a60961a3SKever Yang 257a60961a3SKever Yang /* CRU_CLKSEL21_CON */ 258a60961a3SKever Yang EMMC_CLK_SEL_SHIFT = 15, 259a60961a3SKever Yang EMMC_CLK_SEL_MASK = 1 << EMMC_CLK_SEL_SHIFT, 260a60961a3SKever Yang EMMC_CLK_SEL_EMMC = 0, 261a60961a3SKever Yang EMMC_CLK_SEL_EMMC_DIV50, 262a60961a3SKever Yang EMMC_DIV50_SHIFT = 0, 263a60961a3SKever Yang EMMC_DIV50_MASK = 0xff << EMMC_DIV_SHIFT, 264a60961a3SKever Yang 265a60961a3SKever Yang /* CRU_CLKSEL22_CON */ 266a60961a3SKever Yang GMAC_PLL_SEL_SHIFT = 14, 267a60961a3SKever Yang GMAC_PLL_SEL_MASK = 3 << GMAC_PLL_SEL_SHIFT, 268a60961a3SKever Yang GMAC_PLL_SEL_GPLL = 0, 269a60961a3SKever Yang GMAC_PLL_SEL_CPLL, 270a60961a3SKever Yang GMAC_PLL_SEL_NPLL, 271a60961a3SKever Yang CLK_GMAC_DIV_SHIFT = 8, 272a60961a3SKever Yang CLK_GMAC_DIV_MASK = 0x1f << CLK_GMAC_DIV_SHIFT, 273a60961a3SKever Yang SFC_PLL_SEL_SHIFT = 7, 274a60961a3SKever Yang SFC_PLL_SEL_MASK = 1 << SFC_PLL_SEL_SHIFT, 275a60961a3SKever Yang SFC_DIV_CON_SHIFT = 0, 276a60961a3SKever Yang SFC_DIV_CON_MASK = 0x7f, 277a60961a3SKever Yang 278a60961a3SKever Yang /* CRU_CLK_SEL23_CON */ 279a60961a3SKever Yang BUS_PLL_SEL_SHIFT =15, 2800dc8896cSKever Yang BUS_PLL_SEL_MASK = 1 << BUS_PLL_SEL_SHIFT, 281a60961a3SKever Yang BUS_PLL_SEL_GPLL = 0, 282a60961a3SKever Yang BUS_PLL_SEL_CPLL, 283a60961a3SKever Yang BUS_ACLK_DIV_SHIFT = 8, 284a60961a3SKever Yang BUS_ACLK_DIV_MASK = 0x1f << BUS_ACLK_DIV_SHIFT, 285a60961a3SKever Yang RMII_CLK_SEL_SHIFT = 7, 286a60961a3SKever Yang RMII_CLK_SEL_MASK = 1 << RMII_CLK_SEL_SHIFT, 287a60961a3SKever Yang RMII_CLK_SEL_10M = 0, 288a60961a3SKever Yang RMII_CLK_SEL_100M, 289a60961a3SKever Yang RMII_EXTCLK_SEL_SHIFT = 6, 290a60961a3SKever Yang RMII_EXTCLK_SEL_MASK = 1 << RMII_EXTCLK_SEL_SHIFT, 291a60961a3SKever Yang RMII_EXTCLK_SEL_INT = 0, 292a60961a3SKever Yang RMII_EXTCLK_SEL_EXT, 293a60961a3SKever Yang PCLK_GMAC_DIV_SHIFT = 0, 294a60961a3SKever Yang PCLK_GMAC_DIV_MASK = 0x0f << PCLK_GMAC_DIV_SHIFT, 295a60961a3SKever Yang 296a60961a3SKever Yang /* CRU_CLK_SEL24_CON */ 297a60961a3SKever Yang BUS_PCLK_DIV_SHIFT = 8, 298a60961a3SKever Yang BUS_PCLK_DIV_MASK = 3 << BUS_PCLK_DIV_SHIFT, 299a60961a3SKever Yang BUS_HCLK_DIV_SHIFT = 0, 300a60961a3SKever Yang BUS_HCLK_DIV_MASK = 0x1f << BUS_HCLK_DIV_SHIFT, 301a60961a3SKever Yang 30251d1c6b1SElaine Zhang /* CRU_CLK_SEL25_CON */ 30351d1c6b1SElaine Zhang CRYPTO_APK_SEL_SHIFT = 14, 30451d1c6b1SElaine Zhang CRYPTO_APK_PLL_SEL_MASK = 3 << CRYPTO_APK_SEL_SHIFT, 30551d1c6b1SElaine Zhang CRYPTO_PLL_SEL_GPLL = 0, 30651d1c6b1SElaine Zhang CRYPTO_PLL_SEL_CPLL, 30751d1c6b1SElaine Zhang CRYPTO_PLL_SEL_NPLL = 0, 30851d1c6b1SElaine Zhang CRYPTO_APK_DIV_SHIFT = 8, 30951d1c6b1SElaine Zhang CRYPTO_APK_DIV_MASK = 0x1f << CRYPTO_APK_DIV_SHIFT, 31051d1c6b1SElaine Zhang CRYPTO_PLL_SEL_SHIFT = 6, 31151d1c6b1SElaine Zhang CRYPTO_PLL_SEL_MASK = 3 << CRYPTO_PLL_SEL_SHIFT, 31251d1c6b1SElaine Zhang CRYPTO_DIV_SHIFT = 0, 31351d1c6b1SElaine Zhang CRYPTO_DIV_MASK = 0x1f << CRYPTO_DIV_SHIFT, 31451d1c6b1SElaine Zhang 31595f26412SSugar Zhang /* CRU_CLK_SEL30_CON */ 31695f26412SSugar Zhang CLK_I2S1_DIV_CON_MASK = 0x7f, 31795f26412SSugar Zhang CLK_I2S1_PLL_SEL_MASK = 0X1 << 8, 31895f26412SSugar Zhang CLK_I2S1_PLL_SEL_GPLL = 0X0 << 8, 31995f26412SSugar Zhang CLK_I2S1_PLL_SEL_NPLL = 0X1 << 8, 32095f26412SSugar Zhang CLK_I2S1_SEL_MASK = 0x3 << 10, 32195f26412SSugar Zhang CLK_I2S1_SEL_I2S1 = 0x0 << 10, 32295f26412SSugar Zhang CLK_I2S1_SEL_FRAC = 0x1 << 10, 32395f26412SSugar Zhang CLK_I2S1_SEL_MCLK_IN = 0x2 << 10, 32495f26412SSugar Zhang CLK_I2S1_SEL_OSC = 0x3 << 10, 32595f26412SSugar Zhang CLK_I2S1_OUT_SEL_MASK = 0x1 << 15, 32695f26412SSugar Zhang CLK_I2S1_OUT_SEL_I2S1 = 0x0 << 15, 32795f26412SSugar Zhang CLK_I2S1_OUT_SEL_OSC = 0x1 << 15, 32895f26412SSugar Zhang 32995f26412SSugar Zhang /* CRU_CLK_SEL31_CON */ 33095f26412SSugar Zhang CLK_I2S1_FRAC_NUMERATOR_SHIFT = 16, 33195f26412SSugar Zhang CLK_I2S1_FRAC_NUMERATOR_MASK = 0xffff << 16, 33295f26412SSugar Zhang CLK_I2S1_FRAC_DENOMINATOR_SHIFT = 0, 33395f26412SSugar Zhang CLK_I2S1_FRAC_DENOMINATOR_MASK = 0xffff, 33495f26412SSugar Zhang 335e82920f3SKever Yang /* CRU_CLK_SEL34_CON */ 336e82920f3SKever Yang UART1_PLL_SEL_SHIFT = 14, 337e82920f3SKever Yang UART1_PLL_SEL_MASK = 3 << UART1_PLL_SEL_SHIFT, 338e82920f3SKever Yang UART1_PLL_SEL_GPLL = 0, 339e82920f3SKever Yang UART1_PLL_SEL_24M, 340e82920f3SKever Yang UART1_PLL_SEL_480M, 341e82920f3SKever Yang UART1_PLL_SEL_NPLL, 342e82920f3SKever Yang UART1_DIV_CON_SHIFT = 0, 343e82920f3SKever Yang UART1_DIV_CON_MASK = 0x1f << UART1_DIV_CON_SHIFT, 344e82920f3SKever Yang 345e82920f3SKever Yang /* CRU_CLK_SEL35_CON */ 346e82920f3SKever Yang UART1_CLK_SEL_SHIFT = 14, 347e82920f3SKever Yang UART1_CLK_SEL_MASK = 3 << UART1_PLL_SEL_SHIFT, 348e82920f3SKever Yang UART1_CLK_SEL_UART1 = 0, 349e82920f3SKever Yang UART1_CLK_SEL_UART1_NP5, 350e82920f3SKever Yang UART1_CLK_SEL_UART1_FRAC, 351e82920f3SKever Yang UART1_DIVNP5_SHIFT = 0, 352e82920f3SKever Yang UART1_DIVNP5_MASK = 0x1f << UART1_DIVNP5_SHIFT, 353e82920f3SKever Yang 354e82920f3SKever Yang /* CRU_CLK_SEL37_CON */ 355e82920f3SKever Yang UART2_PLL_SEL_SHIFT = 14, 356e82920f3SKever Yang UART2_PLL_SEL_MASK = 3 << UART2_PLL_SEL_SHIFT, 357e82920f3SKever Yang UART2_PLL_SEL_GPLL = 0, 358e82920f3SKever Yang UART2_PLL_SEL_24M, 359e82920f3SKever Yang UART2_PLL_SEL_480M, 360e82920f3SKever Yang UART2_PLL_SEL_NPLL, 361e82920f3SKever Yang UART2_DIV_CON_SHIFT = 0, 362e82920f3SKever Yang UART2_DIV_CON_MASK = 0x1f << UART2_DIV_CON_SHIFT, 363e82920f3SKever Yang 364e82920f3SKever Yang /* CRU_CLK_SEL38_CON */ 365e82920f3SKever Yang UART2_CLK_SEL_SHIFT = 14, 366e82920f3SKever Yang UART2_CLK_SEL_MASK = 3 << UART2_PLL_SEL_SHIFT, 367e82920f3SKever Yang UART2_CLK_SEL_UART2 = 0, 368e82920f3SKever Yang UART2_CLK_SEL_UART2_NP5, 369e82920f3SKever Yang UART2_CLK_SEL_UART2_FRAC, 370e82920f3SKever Yang UART2_DIVNP5_SHIFT = 0, 371e82920f3SKever Yang UART2_DIVNP5_MASK = 0x1f << UART2_DIVNP5_SHIFT, 372e82920f3SKever Yang 373e82920f3SKever Yang /* CRU_CLK_SEL46_CON */ 374e82920f3SKever Yang UART5_PLL_SEL_SHIFT = 14, 375e82920f3SKever Yang UART5_PLL_SEL_MASK = 3 << UART5_PLL_SEL_SHIFT, 376e82920f3SKever Yang UART5_PLL_SEL_GPLL = 0, 377e82920f3SKever Yang UART5_PLL_SEL_24M, 378e82920f3SKever Yang UART5_PLL_SEL_480M, 379e82920f3SKever Yang UART5_PLL_SEL_NPLL, 380e82920f3SKever Yang UART5_DIV_CON_SHIFT = 0, 381e82920f3SKever Yang UART5_DIV_CON_MASK = 0x1f << UART5_DIV_CON_SHIFT, 382e82920f3SKever Yang 383e82920f3SKever Yang /* CRU_CLK_SEL47_CON */ 384e82920f3SKever Yang UART5_CLK_SEL_SHIFT = 14, 385e82920f3SKever Yang UART5_CLK_SEL_MASK = 3 << UART5_PLL_SEL_SHIFT, 386e82920f3SKever Yang UART5_CLK_SEL_UART5 = 0, 387e82920f3SKever Yang UART5_CLK_SEL_UART5_NP5, 388e82920f3SKever Yang UART5_CLK_SEL_UART5_FRAC, 389e82920f3SKever Yang UART5_DIVNP5_SHIFT = 0, 390e82920f3SKever Yang UART5_DIVNP5_MASK = 0x1f << UART5_DIVNP5_SHIFT, 391e82920f3SKever Yang 392f67f522bSFinley Xiao /* CRU_CLK_SEL49_CON */ 393f67f522bSFinley Xiao CLK_I2C_PLL_SEL_GPLL = 0, 394f67f522bSFinley Xiao CLK_I2C_PLL_SEL_24M, 395f67f522bSFinley Xiao CLK_I2C_DIV_CON_MASK = 0x7f, 396f67f522bSFinley Xiao CLK_I2C_PLL_SEL_MASK = 1, 397f67f522bSFinley Xiao CLK_I2C1_PLL_SEL_SHIFT = 15, 398f67f522bSFinley Xiao CLK_I2C1_DIV_CON_SHIFT = 8, 399f67f522bSFinley Xiao CLK_I2C0_PLL_SEL_SHIFT = 7, 400f67f522bSFinley Xiao CLK_I2C0_DIV_CON_SHIFT = 0, 401f67f522bSFinley Xiao 402f67f522bSFinley Xiao /* CRU_CLK_SEL50_CON */ 403f67f522bSFinley Xiao CLK_I2C3_PLL_SEL_SHIFT = 15, 404f67f522bSFinley Xiao CLK_I2C3_DIV_CON_SHIFT = 8, 405f67f522bSFinley Xiao CLK_I2C2_PLL_SEL_SHIFT = 7, 406f67f522bSFinley Xiao CLK_I2C2_DIV_CON_SHIFT = 0, 407f67f522bSFinley Xiao 408f67f522bSFinley Xiao /* CRU_CLK_SEL52_CON */ 409f67f522bSFinley Xiao CLK_PWM_PLL_SEL_GPLL = 0, 410f67f522bSFinley Xiao CLK_PWM_PLL_SEL_24M, 411f67f522bSFinley Xiao CLK_PWM_DIV_CON_MASK = 0x7f, 412f67f522bSFinley Xiao CLK_PWM_PLL_SEL_MASK = 1, 413f67f522bSFinley Xiao CLK_PWM1_PLL_SEL_SHIFT = 15, 414f67f522bSFinley Xiao CLK_PWM1_DIV_CON_SHIFT = 8, 415f67f522bSFinley Xiao CLK_PWM0_PLL_SEL_SHIFT = 7, 416f67f522bSFinley Xiao CLK_PWM0_DIV_CON_SHIFT = 0, 417f67f522bSFinley Xiao 418f67f522bSFinley Xiao /* CRU_CLK_SEL53_CON */ 419f67f522bSFinley Xiao CLK_SPI_PLL_SEL_GPLL = 0, 420f67f522bSFinley Xiao CLK_SPI_PLL_SEL_24M, 421f67f522bSFinley Xiao CLK_SPI_DIV_CON_MASK = 0x7f, 422f67f522bSFinley Xiao CLK_SPI_PLL_SEL_MASK = 1, 423f67f522bSFinley Xiao CLK_SPI1_PLL_SEL_SHIFT = 15, 424f67f522bSFinley Xiao CLK_SPI1_DIV_CON_SHIFT = 8, 425f67f522bSFinley Xiao CLK_SPI0_PLL_SEL_SHIFT = 7, 426f67f522bSFinley Xiao CLK_SPI0_DIV_CON_SHIFT = 0, 427f67f522bSFinley Xiao 428f67f522bSFinley Xiao /* CRU_CLK_SEL55_CON */ 429f67f522bSFinley Xiao CLK_SARADC_DIV_CON_SHIFT = 0, 430f67f522bSFinley Xiao CLK_SARADC_DIV_CON_MASK = 0x7ff, 431f67f522bSFinley Xiao 432*89cc3f4dSElaine Zhang /* CRU_CLK_SEL56_CON */ 433*89cc3f4dSElaine Zhang CLK_OTP_USR_DIV_CON_SHIFT = 4, 434*89cc3f4dSElaine Zhang CLK_OTP_USR_DIV_CON_MASK = 0x3 << CLK_OTP_USR_DIV_CON_SHIFT, 435*89cc3f4dSElaine Zhang CLK_OTP_DIV_CON_SHIFT = 0, 436*89cc3f4dSElaine Zhang CLK_OTP_DIV_CON_MASK = 0x7, 437*89cc3f4dSElaine Zhang CLK_OTP_S_SEL_SHIFT = 8, 438*89cc3f4dSElaine Zhang CLK_OTP_S_SEL_MASK = 1 << CLK_OTP_S_SEL_SHIFT, 439*89cc3f4dSElaine Zhang CLK_OTP_S_SEL_XIN24M = 0, 440*89cc3f4dSElaine Zhang CLK_OTP_S_SEL_GPLL, 441*89cc3f4dSElaine Zhang CLK_OTP_S_DIV_CON_SHIFT = 0, 442*89cc3f4dSElaine Zhang CLK_OTP_S_DIV_CON_MASK = 0x1FF, 443*89cc3f4dSElaine Zhang 44495f26412SSugar Zhang /* CRU_CLK_GATE10_CON */ 44595f26412SSugar Zhang CLK_I2S1_OUT_MCLK_PAD_MASK = 0x1 << 9, 44695f26412SSugar Zhang CLK_I2S1_OUT_MCLK_PAD_ENABLE = 0x1 << 9, 44795f26412SSugar Zhang CLK_I2S1_OUT_MCLK_PAD_DISABLE = 0x0 << 9, 44895f26412SSugar Zhang 449a60961a3SKever Yang /* CRU_PMU_MODE */ 450a60961a3SKever Yang GPLL_MODE_SHIFT = 0, 451a60961a3SKever Yang GPLL_MODE_MASK = 3 << GPLL_MODE_SHIFT, 452a60961a3SKever Yang 453cefa5186SFinley Xiao /* CRU_PMU_CLK_SEL0_CON */ 454cefa5186SFinley Xiao CLK_PMU_PCLK_DIV_SHIFT = 0, 455cefa5186SFinley Xiao CLK_PMU_PCLK_DIV_MASK = 0x1f << CLK_PMU_PCLK_DIV_SHIFT, 456a60961a3SKever Yang }; 457a60961a3SKever Yang #endif 458