diff options
Diffstat (limited to 'cpu/mpc85xx/fdt.c')
| -rw-r--r-- | cpu/mpc85xx/fdt.c | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/cpu/mpc85xx/fdt.c b/cpu/mpc85xx/fdt.c index 5f9aeb10b..af0e78e07 100644 --- a/cpu/mpc85xx/fdt.c +++ b/cpu/mpc85xx/fdt.c @@ -297,6 +297,40 @@ void fdt_add_enet_stashing(void *fdt)  	do_fixup_by_compat_u32(fdt, "gianfar", "rx-stash-idx", 0, 1);  } +#if defined(CONFIG_SYS_DPAA_FMAN) || defined(CONFIG_SYS_DPAA_PME) +static void ft_fixup_clks(void *blob, const char *alias, unsigned long freq) +{ +	const char *path = fdt_get_alias(blob, alias); + +	int off = fdt_path_offset(blob, path); + +	if (off >= 0) { +		off = fdt_setprop_cell(blob, off, "clock-frequency", freq); +		if (off > 0) +			printf("WARNING enable to set clock-frequency " +				"for %s: %s\n", alias, fdt_strerror(off)); +	} +} + +static void ft_fixup_dpaa_clks(void *blob) +{ +	sys_info_t sysinfo; + +	get_sys_info(&sysinfo); +	ft_fixup_clks(blob, "fman0", sysinfo.freqFMan[0]); + +#if (CONFIG_SYS_NUM_FMAN == 2) +	ft_fixup_clks(blob, "fman1", sysinfo.freqFMan[1]); +#endif + +#ifdef CONFIG_SYS_DPAA_PME +	ft_fixup_clks(blob, "pme", sysinfo.freqPME); +#endif +} +#else +#define ft_fixup_dpaa_clks(x) +#endif +  void ft_cpu_setup(void *blob, bd_t *bd)  {  	int off; @@ -360,4 +394,6 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #if defined(CONFIG_FSL_ESDHC)  	fdt_fixup_esdhc(blob, bd);  #endif + +	ft_fixup_dpaa_clks(blob);  } |