[U-Boot] [PATCH 2/5][v5] arch: powerpc: update the IFC IP input clock

york sun york.sun at nxp.com
Fri Jan 27 21:29:11 CET 2017


On 01/24/2017 02:34 AM, Prabhakar Kushwaha wrote:
> IFC IP clock is always a constant divisor of platform clock
> pre-defined per SoC. Clock control register (CCR) used in
> current implementation governs IFC IP output clock.
>
> So update IFC IP clock to be defined as per predefined clock
> divisor of platform clock.
>
> Signed-off-by: Prabhakar Kushwaha <prabhakar.kushwaha at nxp.com>
> ---
> Changes for v2: Split the patch in 2 patch set
> Changes for v3: Rebased on top of u-boot commit
> Changes for v4: fix compilation error
> Changes for v5: Adding FSL_IFC as dependency
>
>  README                           |  3 +++
>  arch/powerpc/cpu/mpc85xx/Kconfig | 16 ++++++++++++++++
>  arch/powerpc/cpu/mpc85xx/speed.c | 10 ++--------
>  3 files changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/README b/README
> index a95348a..9fda381 100644
> --- a/README
> +++ b/README
> @@ -504,6 +504,9 @@ The following options need to be configured:
>  		CONFIG_SYS_FSL_IFC_LE
>  		Defines the IFC controller register space as Little Endian
>
> +		CONFIG_SYS_FSL_IFC_CLK_DIV
> +		Defines divider of platform clock(clock input to IFC controller).
> +
>  		CONFIG_SYS_FSL_PBL_PBI
>  		It enables addition of RCW (Power on reset configuration) in built image.
>  		Please refer doc/README.pblimage for more details
> diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
> index c67b6b0..8c6503d 100644
> --- a/arch/powerpc/cpu/mpc85xx/Kconfig
> +++ b/arch/powerpc/cpu/mpc85xx/Kconfig
> @@ -1265,6 +1265,22 @@ config SYS_PPC_E500_DEBUG_TLB
>                  symbol should be set to the TLB1 entry to be used for this
>                  purpose. If unsure, do not change.
>
> +config SYS_FSL_IFC_CLK_DIV
> +	int "Divider of platform clock"
> +	depends on FSL_IFC
> +	default 2 if	ARCH_B4420	|| \
> +			ARCH_B4860	|| \
> +			ARCH_T1024	|| \
> +			ARCH_T1023	|| \
> +			ARCH_T1040	|| \
> +			ARCH_T1042	|| \
> +			ARCH_T4160	|| \
> +			ARCH_T4240
> +	default 1
> +	help
> +		Defines divider of platform clock(clock input to
> +		IFC controller).
> +
>  source "board/freescale/b4860qds/Kconfig"
>  source "board/freescale/bsc9131rdb/Kconfig"
>  source "board/freescale/bsc9132qds/Kconfig"
> diff --git a/arch/powerpc/cpu/mpc85xx/speed.c b/arch/powerpc/cpu/mpc85xx/speed.c
> index fcf5d92..adba092 100644
> --- a/arch/powerpc/cpu/mpc85xx/speed.c
> +++ b/arch/powerpc/cpu/mpc85xx/speed.c
> @@ -27,10 +27,6 @@ DECLARE_GLOBAL_DATA_PTR;
>  void get_sys_info(sys_info_t *sys_info)
>  {
>  	volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
> -#ifdef CONFIG_FSL_IFC
> -	struct fsl_ifc ifc_regs = {(void *)CONFIG_SYS_IFC_ADDR, (void *)NULL};
> -	u32 ccr;
> -#endif
>  #ifdef CONFIG_FSL_CORENET
>  	volatile ccsr_clk_t *clk = (void *)(CONFIG_SYS_FSL_CORENET_CLK_ADDR);
>  	unsigned int cpu;
> @@ -640,10 +636,8 @@ void get_sys_info(sys_info_t *sys_info)
>  #endif
>
>  #if defined(CONFIG_FSL_IFC)
> -	ccr = ifc_in32(&ifc_regs.gregs->ifc_ccr);
> -	ccr = ((ccr & IFC_CCR_CLK_DIV_MASK) >> IFC_CCR_CLK_DIV_SHIFT) + 1;
> -
> -	sys_info->freq_localbus = sys_info->freq_systembus / ccr;
> +	sys_info->freq_localbus = sys_info->freq_systembus /
> +						CONFIG_SYS_FSL_IFC_CLK_DIV;
>  #endif
>  }
>
>

After this change, sys_info->freq_localbus holds the input clock of 
local bus, instead of output clock previously. It should be noted in the 
commit message. Same comment goes to patch 3/5.

York



More information about the U-Boot mailing list