On 20/07/2015 13:28, Peng Fan wrote: > 1. Add enet, uart, i2c, ipg clock support for i.MX6UL. > 2. Correct get_periph_clk, it should account for > MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK. > 3. Refactor get_mmdc_ch0_clk to make all i.MX6 share one function, > but not use 'ifdef'. > 4. Use CONFIG_FSL_QSPI for enable_qspi_clk, but not #ifdef CONFIG_MX6SX. > 5. Use CONFIG_PCIE_IMX for pcie clock settings, use CONFIG_CMD_SATA for > sata clock settings. In this way, we not need "#if defined(CONFIG_MX6Q) > || defined....", only need one CONFIG_PCIE_IMX in header file. >
> Signed-off-by: Ye.Li <b37...@freescale.com> > Signed-off-by: Peng Fan <peng....@freescale.com> > --- > > Changes v3: > fix possible assembler usage for MXC_CCM_CS2CDR_ENFC_CLKxx > > Changes v2: > none > > arch/arm/cpu/armv7/mx6/clock.c | 151 > +++++++++++++++++++------------ > arch/arm/include/asm/arch-mx6/crm_regs.h | 98 +++++++++++++------- > 2 files changed, 159 insertions(+), 90 deletions(-) > > diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c > index 3e94472..9cf4eec 100644 > --- a/arch/arm/cpu/armv7/mx6/clock.c > +++ b/arch/arm/cpu/armv7/mx6/clock.c > @@ -81,19 +81,32 @@ void enable_usboh3_clk(unsigned char enable) > #if defined(CONFIG_FEC_MXC) && !defined(CONFIG_MX6SX) > void enable_enet_clk(unsigned char enable) > { > - u32 mask = MXC_CCM_CCGR1_ENET_CLK_ENABLE_MASK; > + u32 mask, *addr; > + > + if (is_cpu_type(MXC_CPU_MX6UL)) { > + mask = MXC_CCM_CCGR3_ENET_MASK; > + addr = &imx_ccm->CCGR3; > + } else { > + mask = MXC_CCM_CCGR1_ENET_MASK; > + addr = &imx_ccm->CCGR1; > + } > > if (enable) > - setbits_le32(&imx_ccm->CCGR1, mask); > + setbits_le32(addr, mask); > else > - clrbits_le32(&imx_ccm->CCGR1, mask); > + clrbits_le32(addr, mask); > } > #endif > > #ifdef CONFIG_MXC_UART > void enable_uart_clk(unsigned char enable) > { > - u32 mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK; > + u32 mask; > + > + if (is_cpu_type(MXC_CPU_MX6UL)) > + mask = MXC_CCM_CCGR5_UART_MASK; > + else > + mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK; > > if (enable) > setbits_le32(&imx_ccm->CCGR5, mask); > @@ -141,7 +154,7 @@ int enable_i2c_clk(unsigned char enable, unsigned i2c_num) > reg &= ~mask; > __raw_writel(reg, &imx_ccm->CCGR2); > } else { > - if (is_cpu_type(MXC_CPU_MX6SX)) { > + if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL)) { > mask = MXC_CCM_CCGR6_I2C4_MASK; > addr = &imx_ccm->CCGR6; > } else { > @@ -214,9 +227,11 @@ static u32 mxc_get_pll_pfd(enum pll_clocks pll, int > pfd_num) > > switch (pll) { > case PLL_BUS: > - if (pfd_num == 3) { > - /* No PFD3 on PPL2 */ > - return 0; > + if (!is_cpu_type(MXC_CPU_MX6UL)) { > + if (pfd_num == 3) { > + /* No PFD3 on PPL2 */ > + return 0; > + } > } > div = __raw_readl(&imx_ccm->analog_pfd_528); > freq = (u64)decode_pll(PLL_BUS, MXC_HCLK); > @@ -248,10 +263,12 @@ static u32 get_mcu_main_clk(void) > > u32 get_periph_clk(void) > { > - u32 reg, freq = 0; > + u32 reg, div = 0, freq = 0; > > reg = __raw_readl(&imx_ccm->cbcdr); > if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) { > + div = (reg & MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK) >> > + MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET; > reg = __raw_readl(&imx_ccm->cbcmr); > reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK; > reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET; > @@ -291,7 +308,7 @@ u32 get_periph_clk(void) > } > } > > - return freq; > + return freq / (div + 1); > } > > static u32 get_ipg_clk(void) > @@ -311,7 +328,7 @@ static u32 get_ipg_per_clk(void) > > reg = __raw_readl(&imx_ccm->cscmr1); > if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || > - is_mx6dqp()) { > + is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) { > if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK) > return MXC_HCLK; /* OSC 24Mhz */ > } > @@ -328,7 +345,7 @@ static u32 get_uart_clk(void) > reg = __raw_readl(&imx_ccm->cscdr1); > > if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || > - is_mx6dqp()) { > + is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) { > if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL) > freq = MXC_HCLK; > } > @@ -347,7 +364,8 @@ static u32 get_cspi_clk(void) > cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >> > MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET; > > - if (is_mx6dqp()) { > + if (is_mx6dqp() || is_cpu_type(MXC_CPU_MX6SL) || > + is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL)) { > if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK) > return MXC_HCLK / (cspi_podf + 1); > } > @@ -402,47 +420,60 @@ static u32 get_emi_slow_clk(void) > return root_freq / (emi_slow_podf + 1); > } > > -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX)) > static u32 get_mmdc_ch0_clk(void) > { > u32 cbcmr = __raw_readl(&imx_ccm->cbcmr); > u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); > - u32 freq, podf; > > - podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) \ > - >> MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET; > - > - switch ((cbcmr & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >> > - MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) { > - case 0: > - freq = decode_pll(PLL_BUS, MXC_HCLK); > - break; > - case 1: > - freq = mxc_get_pll_pfd(PLL_BUS, 2); > - break; > - case 2: > - freq = mxc_get_pll_pfd(PLL_BUS, 0); > - break; > - case 3: > - /* static / 2 divider */ > - freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2; > + u32 freq, podf, per2_clk2_podf; > + > + if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) || > + is_cpu_type(MXC_CPU_MX6SL)) { > + podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >> > + MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET; > + if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) { > + per2_clk2_podf = (cbcdr & > MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK) >> > + MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET; > + if (is_cpu_type(MXC_CPU_MX6SL)) { > + if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL) > + freq = MXC_HCLK; > + else > + freq = decode_pll(PLL_USBOTG, MXC_HCLK); > + } else { > + if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL) > + freq = decode_pll(PLL_BUS, MXC_HCLK); > + else > + freq = decode_pll(PLL_USBOTG, MXC_HCLK); > + } > + } else { > + per2_clk2_podf = 0; > + switch ((cbcmr & > + MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >> > + MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) { > + case 0: > + freq = decode_pll(PLL_BUS, MXC_HCLK); > + break; > + case 1: > + freq = mxc_get_pll_pfd(PLL_BUS, 2); > + break; > + case 2: > + freq = mxc_get_pll_pfd(PLL_BUS, 0); > + break; > + case 3: > + /* static / 2 divider */ > + freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2; > + break; > + } > + } > + return freq / (podf + 1) / (per2_clk2_podf + 1); > + } else { > + podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >> > + MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET; > + return get_periph_clk() / (podf + 1); > } > - > - return freq / (podf + 1); > - > } > -#else > -static u32 get_mmdc_ch0_clk(void) > -{ > - u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); > - u32 mmdc_ch0_podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >> > - MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET; > > - return get_periph_clk() / (mmdc_ch0_podf + 1); > -} > -#endif > - > -#ifdef CONFIG_MX6SX > +#ifdef CONFIG_FSL_QSPI > /* qspi_num can be from 0 - 1 */ > void enable_qspi_clk(int qspi_num) > { > @@ -603,6 +634,7 @@ u32 imx_get_fecclk(void) > return mxc_get_clock(MXC_IPG_CLK); > } > > +#if defined(CONFIG_CMD_SATA) || defined(CONFIG_PCIE_IMX) > static int enable_enet_pll(uint32_t en) > { > struct mxc_ccm_reg *const imx_ccm > @@ -627,8 +659,9 @@ static int enable_enet_pll(uint32_t en) > writel(reg, &imx_ccm->analog_pll_enet); > return 0; > } > +#endif > > -#ifndef CONFIG_MX6SX > +#ifdef CONFIG_CMD_SATA > static void ungate_sata_clock(void) > { > struct mxc_ccm_reg *const imx_ccm = > @@ -637,18 +670,7 @@ static void ungate_sata_clock(void) > /* Enable SATA clock. */ > setbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK); > } > -#endif > - > -static void ungate_pcie_clock(void) > -{ > - struct mxc_ccm_reg *const imx_ccm = > - (struct mxc_ccm_reg *)CCM_BASE_ADDR; > > - /* Enable PCIe clock. */ > - setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK); > -} > - > -#ifndef CONFIG_MX6SX > int enable_sata_clock(void) > { > ungate_sata_clock(); > @@ -664,6 +686,16 @@ void disable_sata_clock(void) > } > #endif > > +#ifdef CONFIG_PCIE_IMX > +static void ungate_pcie_clock(void) > +{ > + struct mxc_ccm_reg *const imx_ccm = > + (struct mxc_ccm_reg *)CCM_BASE_ADDR; > + > + /* Enable PCIe clock. */ > + setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK); > +} > + > int enable_pcie_clock(void) > { > struct anatop_regs *anatop_regs = > @@ -703,7 +735,7 @@ int enable_pcie_clock(void) > clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL); > > /* Party time! Ungate the clock to the PCIe. */ > -#ifndef CONFIG_MX6SX > +#ifdef CONFIG_CMD_SATA > ungate_sata_clock(); > #endif > ungate_pcie_clock(); > @@ -711,6 +743,7 @@ int enable_pcie_clock(void) > return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA | > BM_ANADIG_PLL_ENET_ENABLE_PCIE); > } > +#endif > > #ifdef CONFIG_SECURE_BOOT > void hab_caam_clock_enable(unsigned char enable) > diff --git a/arch/arm/include/asm/arch-mx6/crm_regs.h > b/arch/arm/include/asm/arch-mx6/crm_regs.h > index 7d9fe73..fe75da4 100644 > --- a/arch/arm/include/asm/arch-mx6/crm_regs.h > +++ b/arch/arm/include/asm/arch-mx6/crm_regs.h > @@ -110,6 +110,7 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCR_RBC_EN (1 << 27) > #define MXC_CCM_CCR_REG_BYPASS_CNT_MASK (0x3F << 21) > #define MXC_CCM_CCR_REG_BYPASS_CNT_OFFSET 21 > +/* CCR_WB does not exist on i.MX6SX/UL */ > #define MXC_CCM_CCR_WB_COUNT_MASK 0x7 > #define MXC_CCM_CCR_WB_COUNT_OFFSET (1 << 16) > #define MXC_CCM_CCR_COSC_EN (1 << 12) > @@ -150,12 +151,11 @@ struct mxc_ccm_reg { > /* Define the bits in register CBCDR */ > #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK (0x7 << 27) > #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET 27 > -#define MXC_CCM_CBCDR_PERIPH2_CLK2_SEL (1 << 26) > +#define MXC_CCM_CBCDR_PERIPH2_CLK_SEL (1 << 26) > #define MXC_CCM_CBCDR_PERIPH_CLK_SEL (1 << 25) > -#ifndef CONFIG_MX6SX > +/* MMDC_CH0 not exists on i.MX6SX */ > #define MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK (0x7 << 19) > #define MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET 19 > -#endif > #define MXC_CCM_CBCDR_AXI_PODF_MASK (0x7 << 16) > #define MXC_CCM_CBCDR_AXI_PODF_OFFSET 16 > #define MXC_CCM_CBCDR_AHB_PODF_MASK (0x7 << 10) > @@ -178,7 +178,7 @@ struct mxc_ccm_reg { > #define MXC_CCM_CBCMR_GPU2D_CORE_PODF_OFFSET 23 > #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK (0x3 << 21) > #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET 21 > -#define MXC_CCM_CBCMR_PRE_PERIPH2_CLK2_SEL (1 << 20) > +#define MXC_CCM_CBCMR_PERIPH2_CLK2_SEL (1 << 20) > #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK (0x3 << 18) > #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET 18 > #ifndef CONFIG_MX6SX > @@ -203,18 +203,19 @@ struct mxc_ccm_reg { > /* Define the bits in register CSCMR1 */ > #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK (0x3 << 29) > #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET 29 > -#ifdef CONFIG_MX6SX > +/* QSPI1 exist on i.MX6SX/UL */ > #define MXC_CCM_CSCMR1_QSPI1_PODF_MASK (0x7 << 26) > #define MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET 26 > -#else > #define MXC_CCM_CSCMR1_ACLK_EMI_MASK (0x3 << 27) > #define MXC_CCM_CSCMR1_ACLK_EMI_OFFSET 27 > -#endif > #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK (0x7 << 23) > #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET 23 > /* ACLK_EMI_PODF is LCFIF2_PODF on MX6SX */ > #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_MASK (0x7 << 20) > #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_OFFSET 20 > +/* CSCMR1_GPMI/BCH exist on i.MX6UL */ > +#define MXC_CCM_CSCMR1_GPMI_CLK_SEL (1 << 19) > +#define MXC_CCM_CSCMR1_BCH_CLK_SEL (1 << 18) > #define MXC_CCM_CSCMR1_USDHC4_CLK_SEL (1 << 19) > #define MXC_CCM_CSCMR1_USDHC3_CLK_SEL (1 << 18) > #define MXC_CCM_CSCMR1_USDHC2_CLK_SEL (1 << 17) > @@ -225,10 +226,9 @@ struct mxc_ccm_reg { > #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET 12 > #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK (0x3 << 10) > #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET 10 > -#ifdef CONFIG_MX6SX > +/* QSPI1 exist on i.MX6SX/UL */ > #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK (0x7 << 7) > #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET 7 > -#endif > /* CSCMR1_PER_CLK exists on i.MX6SX/SL/QP */ > #define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK (1 << 6) > #define MXC_CCM_CSCMR1_PER_CLK_SEL_OFFSET 6 > @@ -256,6 +256,12 @@ struct mxc_ccm_reg { > #define MXC_CCM_CSCDR1_VPU_AXI_PODF_MASK (0x7 << 25) > #define MXC_CCM_CSCDR1_VPU_AXI_PODF_OFFSET 25 > #endif > +/* CSCDR1_GPMI/BCH exist on i.MX6UL */ > +#define MXC_CCM_CSCDR1_GPMI_PODF_MASK (0x7 << 22) > +#define MXC_CCM_CSCDR1_GPMI_PODF_OFFSET 22 > +#define MXC_CCM_CSCDR1_BCH_PODF_MASK (0x7 << 19) > +#define MXC_CCM_CSCDR1_BCH_PODF_OFFSET 19 > + > #define MXC_CCM_CSCDR1_USDHC4_PODF_MASK (0x7 << 22) > #define MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET 22 > #define MXC_CCM_CSCDR1_USDHC3_PODF_MASK (0x7 << 19) > @@ -290,7 +296,7 @@ struct mxc_ccm_reg { > #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET 0 > > /* Define the bits in register CS2CDR */ > -#ifdef CONFIG_MX6SX > +/* QSPI2 on i.MX6SX */ > #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK (0x3F << 21) > #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_OFFSET 21 > #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF(v) (((v) & 0x3f) > << 21) > @@ -300,7 +306,7 @@ struct mxc_ccm_reg { > #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK (0x7 << 15) > #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_OFFSET 15 > #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL(v) (((v) & 0x7) > << 15) > -#else > + > #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK (0x3F << 21) > #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_OFFSET 21 > #define MXC_CCM_CS2CDR_ENFC_CLK_PODF(v) (((v) & 0x3f) > << 21) > @@ -308,14 +314,26 @@ struct mxc_ccm_reg { > #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_OFFSET 18 > #define MXC_CCM_CS2CDR_ENFC_CLK_PRED(v) (((v) & 0x7) << > 18) > > -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK \ > - (is_mx6dqp() ? (0x7 << 15) : (0x3 << 16)) > -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET \ > - (is_mx6dqp() ? 15 : 16) > -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) \ > - (is_mx6dqp() ? (((v) & 0x7) << 15) : (((v) & 0x3) << 16)) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP (0x7 << 15) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP 15 > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) (((v) & 0x7) << 15) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ (0x3 << 16) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ 16 > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v) (((v) & 0x3) << 16) > + > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK \ > + ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP : \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET \ > + ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP : \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ) > +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) \ > + ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) : \ > + MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v)) > > -#endif > #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK (0x7 << 12) > #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET 12 > #define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK (0x7 << 9) > @@ -543,10 +561,9 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCGR1_ECSPI4S_MASK (3 << > MXC_CCM_CCGR1_ECSPI4S_OFFSET) > #define MXC_CCM_CCGR1_ECSPI5S_OFFSET 8 > #define MXC_CCM_CCGR1_ECSPI5S_MASK (3 << > MXC_CCM_CCGR1_ECSPI5S_OFFSET) > -#ifndef CONFIG_MX6SX > -#define MXC_CCM_CCGR1_ENET_CLK_ENABLE_OFFSET 10 > -#define MXC_CCM_CCGR1_ENET_CLK_ENABLE_MASK (3 << > MXC_CCM_CCGR1_ENET_CLK_ENABLE_OFFSET) > -#endif > +/* CCGR1_ENET does not exist on i.MX6SX/UL */ > +#define MXC_CCM_CCGR1_ENET_OFFSET 10 > +#define MXC_CCM_CCGR1_ENET_MASK (3 << > MXC_CCM_CCGR1_ENET_OFFSET) > #define MXC_CCM_CCGR1_EPIT1S_OFFSET 12 > #define MXC_CCM_CCGR1_EPIT1S_MASK (3 << > MXC_CCM_CCGR1_EPIT1S_OFFSET) > #define MXC_CCM_CCGR1_EPIT2S_OFFSET 14 > @@ -617,21 +634,21 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_MASK (3 << > MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET) > #endif > > -#ifdef CONFIG_MX6SX > +/* Exist on i.MX6SX */ > #define MXC_CCM_CCGR3_M4_OFFSET 2 > #define MXC_CCM_CCGR3_M4_MASK (3 << > MXC_CCM_CCGR3_M4_OFFSET) > #define MXC_CCM_CCGR3_ENET_OFFSET 4 > #define MXC_CCM_CCGR3_ENET_MASK (3 << > MXC_CCM_CCGR3_ENET_OFFSET) > #define MXC_CCM_CCGR3_QSPI_OFFSET 14 > #define MXC_CCM_CCGR3_QSPI_MASK (3 << > MXC_CCM_CCGR3_QSPI_OFFSET) > -#else > + > #define MXC_CCM_CCGR3_IPU1_IPU_OFFSET 0 > #define MXC_CCM_CCGR3_IPU1_IPU_MASK (3 << > MXC_CCM_CCGR3_IPU1_IPU_OFFSET) > #define MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET 2 > #define MXC_CCM_CCGR3_IPU1_IPU_DI0_MASK (3 << > MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET) > #define MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET 4 > #define MXC_CCM_CCGR3_IPU1_IPU_DI1_MASK (3 << > MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET) > -#endif > + > #define MXC_CCM_CCGR3_IPU2_IPU_OFFSET 6 > #define MXC_CCM_CCGR3_IPU2_IPU_MASK (3 << > MXC_CCM_CCGR3_IPU2_IPU_OFFSET) > #define MXC_CCM_CCGR3_IPU2_IPU_DI0_OFFSET 8 > @@ -640,15 +657,22 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCGR3_IPU2_IPU_DI1_MASK (3 << > MXC_CCM_CCGR3_IPU2_IPU_DI1_OFFSET) > #define MXC_CCM_CCGR3_LDB_DI0_OFFSET 12 > #define MXC_CCM_CCGR3_LDB_DI0_MASK (3 << > MXC_CCM_CCGR3_LDB_DI0_OFFSET) > -#ifdef CONFIG_MX6SX > + > +/* QSPI1 exists on i.MX6SX/UL */ > #define MXC_CCM_CCGR3_QSPI1_OFFSET 14 > #define MXC_CCM_CCGR3_QSPI1_MASK (3 << > MXC_CCM_CCGR3_QSPI1_OFFSET) > -#else > + > #define MXC_CCM_CCGR3_LDB_DI1_OFFSET 14 > #define MXC_CCM_CCGR3_LDB_DI1_MASK (3 << > MXC_CCM_CCGR3_LDB_DI1_OFFSET) > #define MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET 16 > #define MXC_CCM_CCGR3_MIPI_CORE_CFG_MASK (3 << > MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET) > -#endif > + > +/* A7_CLKDIV/WDOG1 on i.MX6UL */ > +#define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET 16 > +#define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_MASK (3 << > MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET) > +#define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET 18 > +#define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_MASK (3 << > MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET) > + > #define MXC_CCM_CCGR3_MLB_OFFSET 18 > #define MXC_CCM_CCGR3_MLB_MASK (3 << > MXC_CCM_CCGR3_MLB_OFFSET) > #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_OFFSET 20 > @@ -661,8 +685,16 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_MASK (3 << > MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_OFFSET) > #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET 26 > #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_MASK (3 << > MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET) > +/* AXI on i.MX6UL */ > +#define MXC_CCM_CCGR3_AXI_CLK_OFFSET 28 > +#define MXC_CCM_CCGR3_AXI_CLK_MASK (3 << > MXC_CCM_CCGR3_AXI_CLK_OFFSET) > #define MXC_CCM_CCGR3_OCRAM_OFFSET 28 > #define MXC_CCM_CCGR3_OCRAM_MASK (3 << > MXC_CCM_CCGR3_OCRAM_OFFSET) > + > +/* GPIO4 on i.MX6UL */ > +#define MXC_CCM_CCGR3_GPIO4_CLK_OFFSET 30 > +#define MXC_CCM_CCGR3_GPIO4_CLK_MASK (3 << > MXC_CCM_CCGR3_GPIO4_CLK_OFFSET) > + > #ifndef CONFIG_MX6SX > #define MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET 30 > #define MXC_CCM_CCGR3_OPENVGAXICLK_MASK (3 << > MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET) > @@ -670,13 +702,11 @@ struct mxc_ccm_reg { > > #define MXC_CCM_CCGR4_PCIE_OFFSET 0 > #define MXC_CCM_CCGR4_PCIE_MASK (3 << > MXC_CCM_CCGR4_PCIE_OFFSET) > -#ifdef CONFIG_MX6SX > +/* QSPI2 on i.MX6SX */ > #define MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET 10 > #define MXC_CCM_CCGR4_QSPI2_ENFC_MASK (3 << > MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET) > -#else > #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET 8 > #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_MASK (3 << > MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET) > -#endif > #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET 12 > #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK (3 << > MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET) > #define MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_OFFSET 14 > @@ -736,6 +766,12 @@ struct mxc_ccm_reg { > #define MXC_CCM_CCGR6_USDHC1_MASK (3 << > MXC_CCM_CCGR6_USDHC1_OFFSET) > #define MXC_CCM_CCGR6_USDHC2_OFFSET 4 > #define MXC_CCM_CCGR6_USDHC2_MASK (3 << > MXC_CCM_CCGR6_USDHC2_OFFSET) > +/* GPMI/BCH on i.MX6UL */ > +#define MXC_CCM_CCGR6_BCH_OFFSET 6 > +#define MXC_CCM_CCGR6_BCH_MASK (3 << > MXC_CCM_CCGR6_BCH_OFFSET) > +#define MXC_CCM_CCGR6_GPMI_OFFSET 8 > +#define MXC_CCM_CCGR6_GPMI_MASK (3 << MXC_CCM_CCGR6_GPMI_OFFSET) > + > #define MXC_CCM_CCGR6_USDHC3_OFFSET 6 > #define MXC_CCM_CCGR6_USDHC3_MASK (3 << > MXC_CCM_CCGR6_USDHC3_OFFSET) > #define MXC_CCM_CCGR6_USDHC4_OFFSET 8 > Applied to u-boot-imx, thanks ! Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot