diff options
Diffstat (limited to 'cpu/mpc86xx/fdt.c')
| -rw-r--r-- | cpu/mpc86xx/fdt.c | 25 | 
1 files changed, 23 insertions, 2 deletions
| diff --git a/cpu/mpc86xx/fdt.c b/cpu/mpc86xx/fdt.c index 12d905203..3adfad98c 100644 --- a/cpu/mpc86xx/fdt.c +++ b/cpu/mpc86xx/fdt.c @@ -9,9 +9,17 @@  #include <common.h>  #include <libfdt.h>  #include <fdt_support.h> +#include "mp.h" + +DECLARE_GLOBAL_DATA_PTR;  void ft_cpu_setup(void *blob, bd_t *bd)  { +#if (CONFIG_NUM_CPUS > 1) +	int off; +	u32 bootpg; +#endif +  	do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,  			     "timebase-frequency", bd->bi_busfreq / 4, 1);  	do_fixup_by_prop_u32(blob, "device_type", "cpu", 4, @@ -28,8 +36,21 @@ void ft_cpu_setup(void *blob, bd_t *bd)  	fdt_fixup_ethernet(blob);  #endif -#ifdef CFG_NS16550 +#ifdef CONFIG_SYS_NS16550  	do_fixup_by_compat_u32(blob, "ns16550", -			       "clock-frequency", CFG_NS16550_CLK, 1); +			       "clock-frequency", CONFIG_SYS_NS16550_CLK, 1); +#endif + +#if (CONFIG_NUM_CPUS > 1) +	/* if we have 4G or more of memory, put the boot page at 4Gb-1M */ +	if (gd->ram_size > 0xfffff000) +		bootpg = 0xfff00000; +	else +		bootpg = gd->ram_size - (1024 * 1024); + +	/* Reserve the boot page so OSes dont use it */ +	off = fdt_add_mem_rsv(blob, bootpg, (u64)4096); +	if (off < 0) +		printf("%s: %s\n", __FUNCTION__, fdt_strerror(off));  #endif  } |