Functional Description
ARM DDI 0500D
Copyright © 2013-2014 ARM. All rights reserved.
2-22
ID021414
Non-Confidential
To enable a core to be powered down, the implementation must place the core on a separately
controlled power supply. In addition, you must clamp the outputs of the core to benign values
while the entire cluster is powered down, to indicate that the core is idle.
To power down the core, apply the following sequence:
1.
Disable the data cache, by clearing the SCTLR.C bit, or the HSCTLR.C bit if in Hyp
mode. This prevents more data cache allocations and causes cacheable memory attributes
to change to Normal Non-cacheable. Subsequent loads and stores do not access the L1 or
L2 caches.
2.
Clean and invalidate all data from the L1 Data cache. The L2 duplicate snoop tag RAM
for this core is now empty. This prevents any new data cache snoops or data cache
maintenance operations from other cores in the cluster being issued to this core.
3.
Disable data coherency with other cores in the cluster, by clearing the
CPUECTLR.SMPEN bit. Clearing the SMPEN bit enables the core to be taken out of
coherency by preventing the core from receiving cache or TLB maintenance operations
broadcast by other cores in the cluster.
4.
Execute an
ISB
instruction to ensure that all of the register changes from the previous steps
have been committed.
5.
Execute a
DSB SY
instruction to ensure that all cache, TLB and branch predictor
maintenance operations issued by any core in the cluster device before the SMPEN bit
was cleared have completed.
6.
Execute a
WFI
instruction and wait until the
STANDBYWFI
output is asserted to indicate
that the core is in idle and low power state.
7.
Deassert
DBGPWRDUP
LOW. This prevents any external debug access to the core.
8.
Activate the core output clamps.
9.
Remove power from the PDCPU power domain.
To power up the core, apply the following sequence:
1.
Assert
nCPUPORESET
LOW. Ensure
DBGPWRDUP
is held LOW to prevent any
external debug access to the core.
2.
Apply power to the PDCPU power domain. Keep the state of the signals
nCPUPORESET
and
DBGPWRDUP
LOW.
3.
Release the core output clamps.
4.
Deassert resets.
5.
Set the SMPEN bit to 1 to enable snooping into the core.
6.
Assert
DBGPWRDUP
HIGH to allow external debug access to the core.
7.
If required use software to restore the state of the core as it was prior to powerdown.
Cluster shutdown mode without system driven L2 flush
This is the mode where the PDCORTEXA53, PDL2, and PDCPU power domains are shut down
and all state is lost. In this section, a lead core is defined as the last core to switch off, or the first
core to switch on. To power down the cluster, apply the following sequence:
1.
Ensure all non-lead cores are in shutdown mode, see
Individual core shutdown mode
on
page 2-21
.