diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc85xx/fdt.c')
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/fdt.c | 22 | 
1 files changed, 19 insertions, 3 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c index 45403641c..53e059655 100644 --- a/arch/powerpc/cpu/mpc85xx/fdt.c +++ b/arch/powerpc/cpu/mpc85xx/fdt.c @@ -48,6 +48,7 @@ void ft_fixup_cpu(void *blob, u64 memory_limit)  	ulong spin_tbl_addr = get_spin_phys_addr();  	u32 bootpg = determine_mp_bootpg();  	u32 id = get_my_id(); +	const char *enable_method;  	off = fdt_node_offset_by_prop_value(blob, -1, "device_type", "cpu", 4);  	while (off != -FDT_ERR_NOTFOUND) { @@ -63,10 +64,25 @@ void ft_fixup_cpu(void *blob, u64 memory_limit)  				fdt_setprop_string(blob, off, "status",  								"disabled");  			} + +			if (hold_cores_in_reset(0)) { +#ifdef CONFIG_FSL_CORENET +				/* Cores held in reset, use BRR to release */ +				enable_method = "fsl,brr-holdoff"; +#else +				/* Cores held in reset, use EEBPCR to release */ +				enable_method = "fsl,eebpcr-holdoff"; +#endif +			} else { +				/* Cores out of reset and in a spin-loop */ +				enable_method = "spin-table"; + +				fdt_setprop(blob, off, "cpu-release-addr", +						&val, sizeof(val)); +			} +  			fdt_setprop_string(blob, off, "enable-method", -							"spin-table"); -			fdt_setprop(blob, off, "cpu-release-addr", -					&val, sizeof(val)); +							enable_method);  		} else {  			printf ("cpu NULL\n");  		} |