[U-Boot] [PATCH] vf610twr: Enable all masks of CCGRx registers.
Stefan Agner
stefan at agner.ch
Mon Oct 12 22:36:51 CEST 2015
On 2015-10-08 12:32, Anthony Felice wrote:
> The CCGRx registers, or clock gating registers, can be set to disable or enable
> clocks for devices on the vf610twr platform. Enabling masks for all CCGRx
> registers allows Linux drivers, like snvs_rtc, and also MQX applications, to
> work out-of-the-box. There are no real downsides to enabling all clocks, and
> this has been done in previous Freescale releases of U-Boot for the Vybrid
> Tower.
I don't really agree with this patch. Linux should handle clocks for
snvs_rtc properly, if the necessary clocks are assigned. At least it
seems to work on a recent mainline kernel.
As far as I remember there is a clock tree driver for Vybrid in MQX too,
so it should be able to handle clocks.
And, there is a downside with this approach: It will consume more power.
Although, Linux will automatically disable unused clocks, at least the
gates which it knows of. Hence, this will lead to a higher power
consumption not only during boot time, but also during run time.
--
Stefan
>
> Signed-off-by: Anthony Felice <tony.felice at timesys.com>
> ---
> arch/arm/include/asm/arch-vf610/crm_regs.h | 1 +
> board/freescale/vf610twr/vf610twr.c | 22 +++++++++-------------
> 2 files changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-vf610/crm_regs.h
> b/arch/arm/include/asm/arch-vf610/crm_regs.h
> index a46e396..11b87ec 100644
> --- a/arch/arm/include/asm/arch-vf610/crm_regs.h
> +++ b/arch/arm/include/asm/arch-vf610/crm_regs.h
> @@ -187,6 +187,7 @@ struct anadig_reg {
> #define CCM_CSCMR2_RMII_CLK_SEL(v) (((v) & 0x3) << 4)
>
> #define CCM_REG_CTRL_MASK 0xffffffff
> +#define CCM_CCGRX_ENABLE_ALL_CTRL_MASK (0xffffffff)
> #define CCM_CCGR0_UART0_CTRL_MASK (0x3 << 14)
> #define CCM_CCGR0_UART1_CTRL_MASK (0x3 << 16)
> #define CCM_CCGR0_DSPI0_CTRL_MASK (0x3 << 24)
> diff --git a/board/freescale/vf610twr/vf610twr.c
> b/board/freescale/vf610twr/vf610twr.c
> index 7834931..a78e9e6 100644
> --- a/board/freescale/vf610twr/vf610twr.c
> +++ b/board/freescale/vf610twr/vf610twr.c
> @@ -272,27 +272,23 @@ static void clock_init(void)
> struct anadig_reg *anadig = (struct anadig_reg *)ANADIG_BASE_ADDR;
>
> clrsetbits_le32(&ccm->ccgr0, CCM_REG_CTRL_MASK,
> - CCM_CCGR0_UART1_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr1, CCM_REG_CTRL_MASK,
> - CCM_CCGR1_PIT_CTRL_MASK | CCM_CCGR1_WDOGA5_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr2, CCM_REG_CTRL_MASK,
> - CCM_CCGR2_IOMUXC_CTRL_MASK | CCM_CCGR2_PORTA_CTRL_MASK |
> - CCM_CCGR2_PORTB_CTRL_MASK | CCM_CCGR2_PORTC_CTRL_MASK |
> - CCM_CCGR2_PORTD_CTRL_MASK | CCM_CCGR2_PORTE_CTRL_MASK |
> - CCM_CCGR2_QSPI0_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr3, CCM_REG_CTRL_MASK,
> - CCM_CCGR3_ANADIG_CTRL_MASK | CCM_CCGR3_SCSC_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr4, CCM_REG_CTRL_MASK,
> - CCM_CCGR4_WKUP_CTRL_MASK | CCM_CCGR4_CCM_CTRL_MASK |
> - CCM_CCGR4_GPC_CTRL_MASK | CCM_CCGR4_I2C0_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr6, CCM_REG_CTRL_MASK,
> - CCM_CCGR6_OCOTP_CTRL_MASK | CCM_CCGR6_DDRMC_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr7, CCM_REG_CTRL_MASK,
> - CCM_CCGR7_SDHC1_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr9, CCM_REG_CTRL_MASK,
> - CCM_CCGR9_FEC0_CTRL_MASK | CCM_CCGR9_FEC1_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
> clrsetbits_le32(&ccm->ccgr10, CCM_REG_CTRL_MASK,
> - CCM_CCGR10_NFC_CTRL_MASK);
> + CCM_CCGRX_ENABLE_ALL_CTRL_MASK);
>
> clrsetbits_le32(&anadig->pll2_ctrl, ANADIG_PLL2_CTRL_POWERDOWN,
> ANADIG_PLL2_CTRL_ENABLE | ANADIG_PLL2_CTRL_DIV_SELECT);
More information about the U-Boot
mailing list