1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2013-2014 Freescale Semiconductor, Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef __ARCH_ARM_MACH_VF610_CCM_REGS_H__ 8*4882a593Smuzhiyun #define __ARCH_ARM_MACH_VF610_CCM_REGS_H__ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/types.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* Clock Controller Module (CCM) */ 15*4882a593Smuzhiyun struct ccm_reg { 16*4882a593Smuzhiyun u32 ccr; 17*4882a593Smuzhiyun u32 csr; 18*4882a593Smuzhiyun u32 ccsr; 19*4882a593Smuzhiyun u32 cacrr; 20*4882a593Smuzhiyun u32 cscmr1; 21*4882a593Smuzhiyun u32 cscdr1; 22*4882a593Smuzhiyun u32 cscdr2; 23*4882a593Smuzhiyun u32 cscdr3; 24*4882a593Smuzhiyun u32 cscmr2; 25*4882a593Smuzhiyun u32 cscdr4; 26*4882a593Smuzhiyun u32 ctor; 27*4882a593Smuzhiyun u32 clpcr; 28*4882a593Smuzhiyun u32 cisr; 29*4882a593Smuzhiyun u32 cimr; 30*4882a593Smuzhiyun u32 ccosr; 31*4882a593Smuzhiyun u32 cgpr; 32*4882a593Smuzhiyun u32 ccgr0; 33*4882a593Smuzhiyun u32 ccgr1; 34*4882a593Smuzhiyun u32 ccgr2; 35*4882a593Smuzhiyun u32 ccgr3; 36*4882a593Smuzhiyun u32 ccgr4; 37*4882a593Smuzhiyun u32 ccgr5; 38*4882a593Smuzhiyun u32 ccgr6; 39*4882a593Smuzhiyun u32 ccgr7; 40*4882a593Smuzhiyun u32 ccgr8; 41*4882a593Smuzhiyun u32 ccgr9; 42*4882a593Smuzhiyun u32 ccgr10; 43*4882a593Smuzhiyun u32 ccgr11; 44*4882a593Smuzhiyun u32 cmeor0; 45*4882a593Smuzhiyun u32 cmeor1; 46*4882a593Smuzhiyun u32 cmeor2; 47*4882a593Smuzhiyun u32 cmeor3; 48*4882a593Smuzhiyun u32 cmeor4; 49*4882a593Smuzhiyun u32 cmeor5; 50*4882a593Smuzhiyun u32 cppdsr; 51*4882a593Smuzhiyun u32 ccowr; 52*4882a593Smuzhiyun u32 ccpgr0; 53*4882a593Smuzhiyun u32 ccpgr1; 54*4882a593Smuzhiyun u32 ccpgr2; 55*4882a593Smuzhiyun u32 ccpgr3; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* Analog components control digital interface (ANADIG) */ 59*4882a593Smuzhiyun struct anadig_reg { 60*4882a593Smuzhiyun u32 reserved_0x000[4]; 61*4882a593Smuzhiyun u32 pll3_ctrl; 62*4882a593Smuzhiyun u32 reserved_0x014[3]; 63*4882a593Smuzhiyun u32 pll7_ctrl; 64*4882a593Smuzhiyun u32 reserved_0x024[3]; 65*4882a593Smuzhiyun u32 pll2_ctrl; 66*4882a593Smuzhiyun u32 reserved_0x034[3]; 67*4882a593Smuzhiyun u32 pll2_ss; 68*4882a593Smuzhiyun u32 reserved_0x044[3]; 69*4882a593Smuzhiyun u32 pll2_num; 70*4882a593Smuzhiyun u32 reserved_0x054[3]; 71*4882a593Smuzhiyun u32 pll2_denom; 72*4882a593Smuzhiyun u32 reserved_0x064[3]; 73*4882a593Smuzhiyun u32 pll4_ctrl; 74*4882a593Smuzhiyun u32 reserved_0x074[3]; 75*4882a593Smuzhiyun u32 pll4_num; 76*4882a593Smuzhiyun u32 reserved_0x084[3]; 77*4882a593Smuzhiyun u32 pll4_denom; 78*4882a593Smuzhiyun u32 reserved_0x094[3]; 79*4882a593Smuzhiyun u32 pll6_ctrl; 80*4882a593Smuzhiyun u32 reserved_0x0A4[3]; 81*4882a593Smuzhiyun u32 pll6_num; 82*4882a593Smuzhiyun u32 reserved_0x0B4[3]; 83*4882a593Smuzhiyun u32 pll6_denom; 84*4882a593Smuzhiyun u32 reserved_0x0C4[7]; 85*4882a593Smuzhiyun u32 pll5_ctrl; 86*4882a593Smuzhiyun u32 reserved_0x0E4[3]; 87*4882a593Smuzhiyun u32 pll3_pfd; 88*4882a593Smuzhiyun u32 reserved_0x0F4[3]; 89*4882a593Smuzhiyun u32 pll2_pfd; 90*4882a593Smuzhiyun u32 reserved_0x104[3]; 91*4882a593Smuzhiyun u32 reg_1p1; 92*4882a593Smuzhiyun u32 reserved_0x114[3]; 93*4882a593Smuzhiyun u32 reg_3p0; 94*4882a593Smuzhiyun u32 reserved_0x124[3]; 95*4882a593Smuzhiyun u32 reg_2p5; 96*4882a593Smuzhiyun u32 reserved_0x134[7]; 97*4882a593Smuzhiyun u32 ana_misc0; 98*4882a593Smuzhiyun u32 reserved_0x154[3]; 99*4882a593Smuzhiyun u32 ana_misc1; 100*4882a593Smuzhiyun u32 reserved_0x164[63]; 101*4882a593Smuzhiyun u32 anadig_digprog; 102*4882a593Smuzhiyun u32 reserved_0x264[3]; 103*4882a593Smuzhiyun u32 pll1_ctrl; 104*4882a593Smuzhiyun u32 reserved_0x274[3]; 105*4882a593Smuzhiyun u32 pll1_ss; 106*4882a593Smuzhiyun u32 reserved_0x284[3]; 107*4882a593Smuzhiyun u32 pll1_num; 108*4882a593Smuzhiyun u32 reserved_0x294[3]; 109*4882a593Smuzhiyun u32 pll1_denom; 110*4882a593Smuzhiyun u32 reserved_0x2A4[3]; 111*4882a593Smuzhiyun u32 pll1_pdf; 112*4882a593Smuzhiyun u32 reserved_0x2B4[3]; 113*4882a593Smuzhiyun u32 pll_lock; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun #endif 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun #define CCM_CCR_FIRC_EN (1 << 16) 118*4882a593Smuzhiyun #define CCM_CCR_OSCNT_MASK 0xff 119*4882a593Smuzhiyun #define CCM_CCR_OSCNT(v) ((v) & 0xff) 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD_CLK_SEL_OFFSET 19 122*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD_CLK_SEL_MASK (0x7 << 19) 123*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD_CLK_SEL(v) (((v) & 0x7) << 19) 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD_CLK_SEL_OFFSET 16 126*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD_CLK_SEL_MASK (0x7 << 16) 127*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD_CLK_SEL(v) (((v) & 0x7) << 16) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD4_EN (1 << 15) 130*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD3_EN (1 << 14) 131*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD2_EN (1 << 13) 132*4882a593Smuzhiyun #define CCM_CCSR_PLL2_PFD1_EN (1 << 12) 133*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD4_EN (1 << 11) 134*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD3_EN (1 << 10) 135*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD2_EN (1 << 9) 136*4882a593Smuzhiyun #define CCM_CCSR_PLL1_PFD1_EN (1 << 8) 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #define CCM_CCSR_DDRC_CLK_SEL(v) ((v) << 6) 139*4882a593Smuzhiyun #define CCM_CCSR_FAST_CLK_SEL(v) ((v) << 5) 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun #define CCM_CCSR_SYS_CLK_SEL_OFFSET 0 142*4882a593Smuzhiyun #define CCM_CCSR_SYS_CLK_SEL_MASK 0x7 143*4882a593Smuzhiyun #define CCM_CCSR_SYS_CLK_SEL(v) ((v) & 0x7) 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define CCM_CACRR_IPG_CLK_DIV_OFFSET 11 146*4882a593Smuzhiyun #define CCM_CACRR_IPG_CLK_DIV_MASK (0x3 << 11) 147*4882a593Smuzhiyun #define CCM_CACRR_IPG_CLK_DIV(v) (((v) & 0x3) << 11) 148*4882a593Smuzhiyun #define CCM_CACRR_BUS_CLK_DIV_OFFSET 3 149*4882a593Smuzhiyun #define CCM_CACRR_BUS_CLK_DIV_MASK (0x7 << 3) 150*4882a593Smuzhiyun #define CCM_CACRR_BUS_CLK_DIV(v) (((v) & 0x7) << 3) 151*4882a593Smuzhiyun #define CCM_CACRR_ARM_CLK_DIV_OFFSET 0 152*4882a593Smuzhiyun #define CCM_CACRR_ARM_CLK_DIV_MASK 0x7 153*4882a593Smuzhiyun #define CCM_CACRR_ARM_CLK_DIV(v) ((v) & 0x7) 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #define CCM_CSCMR1_DCU1_CLK_SEL (1 << 29) 156*4882a593Smuzhiyun #define CCM_CSCMR1_DCU0_CLK_SEL (1 << 28) 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun #define CCM_CSCMR1_QSPI0_CLK_SEL_OFFSET 22 159*4882a593Smuzhiyun #define CCM_CSCMR1_QSPI0_CLK_SEL_MASK (0x3 << 22) 160*4882a593Smuzhiyun #define CCM_CSCMR1_QSPI0_CLK_SEL(v) (((v) & 0x3) << 22) 161*4882a593Smuzhiyun #define CCM_CSCMR1_ESDHC1_CLK_SEL_OFFSET 18 162*4882a593Smuzhiyun #define CCM_CSCMR1_ESDHC1_CLK_SEL_MASK (0x3 << 18) 163*4882a593Smuzhiyun #define CCM_CSCMR1_ESDHC1_CLK_SEL(v) (((v) & 0x3) << 18) 164*4882a593Smuzhiyun #define CCM_CSCMR1_NFC_CLK_SEL_OFFSET 12 165*4882a593Smuzhiyun #define CCM_CSCMR1_NFC_CLK_SEL_MASK (0x3 << 12) 166*4882a593Smuzhiyun #define CCM_CSCMR1_NFC_CLK_SEL(v) (((v) & 0x3) << 12) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define CCM_CSCDR1_RMII_CLK_EN (1 << 24) 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_EN (1 << 9) 171*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_FRAC_DIV_EN (1 << 13) 172*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_CLK_INV (1 << 14) 173*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_FRAC_DIV_OFFSET 4 174*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_FRAC_DIV_MASK (0xf << 4) 175*4882a593Smuzhiyun #define CCM_CSCDR2_NFC_FRAC_DIV(v) (((v) & 0xf) << 4) 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun #define CCM_CSCDR2_ESDHC1_EN (1 << 29) 178*4882a593Smuzhiyun #define CCM_CSCDR2_ESDHC1_CLK_DIV_OFFSET 20 179*4882a593Smuzhiyun #define CCM_CSCDR2_ESDHC1_CLK_DIV_MASK (0xf << 20) 180*4882a593Smuzhiyun #define CCM_CSCDR2_ESDHC1_CLK_DIV(v) (((v) & 0xf) << 20) 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #define CCM_CSCDR3_DCU1_EN (1 << 23) 183*4882a593Smuzhiyun #define CCM_CSCDR3_DCU1_DIV_MASK (0x7 << 20) 184*4882a593Smuzhiyun #define CCM_CSCDR3_DCU1_DIV(v) (((v) & 0x7) << 20) 185*4882a593Smuzhiyun #define CCM_CSCDR3_DCU0_EN (1 << 19) 186*4882a593Smuzhiyun #define CCM_CSCDR3_DCU0_DIV_MASK (0x7 << 16) 187*4882a593Smuzhiyun #define CCM_CSCDR3_DCU0_DIV(v) (((v) & 0x7) << 16) 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun #define CCM_CSCDR3_NFC_PRE_DIV_OFFSET 13 190*4882a593Smuzhiyun #define CCM_CSCDR3_NFC_PRE_DIV_MASK (0x7 << 13) 191*4882a593Smuzhiyun #define CCM_CSCDR3_NFC_PRE_DIV(v) (((v) & 0x7) << 13) 192*4882a593Smuzhiyun #define CCM_CSCDR3_QSPI0_EN (1 << 4) 193*4882a593Smuzhiyun #define CCM_CSCDR3_QSPI0_DIV(v) ((v) << 3) 194*4882a593Smuzhiyun #define CCM_CSCDR3_QSPI0_X2_DIV(v) ((v) << 2) 195*4882a593Smuzhiyun #define CCM_CSCDR3_QSPI0_X4_DIV(v) ((v) & 0x3) 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun #define CCM_CSCMR2_RMII_CLK_SEL_OFFSET 4 198*4882a593Smuzhiyun #define CCM_CSCMR2_RMII_CLK_SEL_MASK (0x3 << 4) 199*4882a593Smuzhiyun #define CCM_CSCMR2_RMII_CLK_SEL(v) (((v) & 0x3) << 4) 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun #define CCM_REG_CTRL_MASK 0xffffffff 202*4882a593Smuzhiyun #define CCM_CCGR0_UART0_CTRL_MASK (0x3 << 14) 203*4882a593Smuzhiyun #define CCM_CCGR0_UART1_CTRL_MASK (0x3 << 16) 204*4882a593Smuzhiyun #define CCM_CCGR0_DSPI0_CTRL_MASK (0x3 << 24) 205*4882a593Smuzhiyun #define CCM_CCGR0_DSPI1_CTRL_MASK (0x3 << 26) 206*4882a593Smuzhiyun #define CCM_CCGR1_USBC0_CTRL_MASK (0x3 << 8) 207*4882a593Smuzhiyun #define CCM_CCGR1_PIT_CTRL_MASK (0x3 << 14) 208*4882a593Smuzhiyun #define CCM_CCGR1_TCON0_CTRL_MASK (0x3 << 26) 209*4882a593Smuzhiyun #define CCM_CCGR1_WDOGA5_CTRL_MASK (0x3 << 28) 210*4882a593Smuzhiyun #define CCM_CCGR2_QSPI0_CTRL_MASK (0x3 << 8) 211*4882a593Smuzhiyun #define CCM_CCGR2_IOMUXC_CTRL_MASK (0x3 << 16) 212*4882a593Smuzhiyun #define CCM_CCGR2_PORTA_CTRL_MASK (0x3 << 18) 213*4882a593Smuzhiyun #define CCM_CCGR2_PORTB_CTRL_MASK (0x3 << 20) 214*4882a593Smuzhiyun #define CCM_CCGR2_PORTC_CTRL_MASK (0x3 << 22) 215*4882a593Smuzhiyun #define CCM_CCGR2_PORTD_CTRL_MASK (0x3 << 24) 216*4882a593Smuzhiyun #define CCM_CCGR2_PORTE_CTRL_MASK (0x3 << 26) 217*4882a593Smuzhiyun #define CCM_CCGR3_ANADIG_CTRL_MASK 0x3 218*4882a593Smuzhiyun #define CCM_CCGR3_SCSC_CTRL_MASK (0x3 << 4) 219*4882a593Smuzhiyun #define CCM_CCGR3_DCU0_CTRL_MASK (0x3 << 16) 220*4882a593Smuzhiyun #define CCM_CCGR4_WKUP_CTRL_MASK (0x3 << 20) 221*4882a593Smuzhiyun #define CCM_CCGR4_CCM_CTRL_MASK (0x3 << 22) 222*4882a593Smuzhiyun #define CCM_CCGR4_GPC_CTRL_MASK (0x3 << 24) 223*4882a593Smuzhiyun #define CCM_CCGR4_I2C0_CTRL_MASK (0x3 << 12) 224*4882a593Smuzhiyun #define CCM_CCGR4_I2C1_CTRL_MASK (0x3 << 14) 225*4882a593Smuzhiyun #define CCM_CCGR6_OCOTP_CTRL_MASK (0x3 << 10) 226*4882a593Smuzhiyun #define CCM_CCGR6_DSPI2_CTRL_MASK (0x3 << 24) 227*4882a593Smuzhiyun #define CCM_CCGR6_DSPI3_CTRL_MASK (0x3 << 26) 228*4882a593Smuzhiyun #define CCM_CCGR6_DDRMC_CTRL_MASK (0x3 << 28) 229*4882a593Smuzhiyun #define CCM_CCGR7_SDHC1_CTRL_MASK (0x3 << 4) 230*4882a593Smuzhiyun #define CCM_CCGR7_USBC1_CTRL_MASK (0x3 << 8) 231*4882a593Smuzhiyun #define CCM_CCGR9_FEC0_CTRL_MASK 0x3 232*4882a593Smuzhiyun #define CCM_CCGR9_FEC1_CTRL_MASK (0x3 << 2) 233*4882a593Smuzhiyun #define CCM_CCGR10_NFC_CTRL_MASK 0x3 234*4882a593Smuzhiyun #define CCM_CCGR10_I2C2_CTRL_MASK (0x3 << 12) 235*4882a593Smuzhiyun #define CCM_CCGR10_I2C3_CTRL_MASK (0x3 << 14) 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun #define ANADIG_PLL7_CTRL_BYPASS (1 << 16) 238*4882a593Smuzhiyun #define ANADIG_PLL7_CTRL_ENABLE (1 << 13) 239*4882a593Smuzhiyun #define ANADIG_PLL7_CTRL_POWERDOWN (1 << 12) 240*4882a593Smuzhiyun #define ANADIG_PLL7_CTRL_DIV_SELECT (1 << 1) 241*4882a593Smuzhiyun #define ANADIG_PLL5_CTRL_BYPASS (1 << 16) 242*4882a593Smuzhiyun #define ANADIG_PLL5_CTRL_ENABLE (1 << 13) 243*4882a593Smuzhiyun #define ANADIG_PLL5_CTRL_POWERDOWN (1 << 12) 244*4882a593Smuzhiyun #define ANADIG_PLL5_CTRL_DIV_SELECT 1 245*4882a593Smuzhiyun #define ANADIG_PLL3_CTRL_BYPASS (1 << 16) 246*4882a593Smuzhiyun #define ANADIG_PLL3_CTRL_ENABLE (1 << 13) 247*4882a593Smuzhiyun #define ANADIG_PLL3_CTRL_POWERDOWN (1 << 12) 248*4882a593Smuzhiyun #define ANADIG_PLL3_CTRL_DIV_SELECT (1 << 1) 249*4882a593Smuzhiyun #define ANADIG_PLL2_CTRL_ENABLE (1 << 13) 250*4882a593Smuzhiyun #define ANADIG_PLL2_CTRL_POWERDOWN (1 << 12) 251*4882a593Smuzhiyun #define ANADIG_PLL2_CTRL_DIV_SELECT 1 252*4882a593Smuzhiyun #define ANADIG_PLL1_CTRL_ENABLE (1 << 13) 253*4882a593Smuzhiyun #define ANADIG_PLL1_CTRL_POWERDOWN (1 << 12) 254*4882a593Smuzhiyun #define ANADIG_PLL1_CTRL_DIV_SELECT 1 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun #define FASE_CLK_FREQ 24000000 257*4882a593Smuzhiyun #define SLOW_CLK_FREQ 32000 258*4882a593Smuzhiyun #define PLL1_PFD1_FREQ 500000000 259*4882a593Smuzhiyun #define PLL1_PFD2_FREQ 452000000 260*4882a593Smuzhiyun #define PLL1_PFD3_FREQ 396000000 261*4882a593Smuzhiyun #define PLL1_PFD4_FREQ 528000000 262*4882a593Smuzhiyun #define PLL1_MAIN_FREQ 528000000 263*4882a593Smuzhiyun #define PLL2_PFD1_FREQ 500000000 264*4882a593Smuzhiyun #define PLL2_PFD2_FREQ 396000000 265*4882a593Smuzhiyun #define PLL2_PFD3_FREQ 339000000 266*4882a593Smuzhiyun #define PLL2_PFD4_FREQ 413000000 267*4882a593Smuzhiyun #define PLL2_MAIN_FREQ 528000000 268*4882a593Smuzhiyun #define PLL3_MAIN_FREQ 480000000 269*4882a593Smuzhiyun #define PLL3_PFD3_FREQ 298000000 270*4882a593Smuzhiyun #define PLL5_MAIN_FREQ 500000000 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun #define ENET_EXTERNAL_CLK 50000000 273*4882a593Smuzhiyun #define AUDIO_EXTERNAL_CLK 24576000 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun #endif /*__ARCH_ARM_MACH_VF610_CCM_REGS_H__ */ 276