Hi Scott, I just was looking into doing this myself when I ran across this unanswered question... I've sort of given up on this forum, as no one seems to respond for a really long time... looks like you asked your question over 5 months ago with no response.
Well, to show you what I did, here's a shot of my notes:
DISABLING CORES ON LS1046A
ref: 12.3.11 Core Disable Register (COREDISR)
- COREDISR provides a mechanism for gating clocks to any cores on the device that are not used when running an application.
- COREDISR register should only be configured in the following conditions:
- Before system ready, COREDISR register can be programmed by the external debugger or Pre-Boot Initialization.
- After system ready, a COREDISR register bit can be programmed for the corresponding core by the external debugger or embedded software while the core is in boot-holdoff mode.
HOW TO…
- DCFG_CCSR base address: 0x01EE0000
- COREDISR address: 0x01EE0094
Value Definition
| 0x000000002 | Core 1 disabled |
| 0x000000004 | Core 2 disabled |
| 0x000000008 | Core 3 disabled |
Values can be OR’d together to disable multiple cores.
Core 0 is always enabled…
Example:
//-------------------------------------------------------------------------
// disable core 3 and 2 so we only use core 0 and 1...
//-------------------------------------------------------------------------
write 0xEE0094, 0x0000000CMODIFY U-BOOT TO REFLECT IDLE CORES
- Change code in ./u-boot/arch/arm/cpu/armv8/fsl-layerscape/cpu.c
for_each_cpu(i, core, cpu_numcores(), cpu_mask()) {
if(!(i % 2))
printf("\n\t");
type = TP_ITYP_VER(fsl_qoriq_core_to_type(core));
printf("CPU%d(%s):%-4s MHz %s ", core,
(type == TY_ITYP_VER_A7) ? "A7 " :
(type == TY_ITYP_VER_A53 ? "A53" :
(type == TY_ITYP_VER_A57 ? "A57" :
(type == TY_ITYP_VER_A72 ? "A72" : " "))),
strmhz(buf, sysinfo.freq_processor[core]),
(in_be32(0x01EE0094) & (1<<core)) ? "[ IDLE ]" : "[ACTIVE]");
}