Add provision to extend CPU operations at more levels
Various CPU drivers in ARM Trusted Firmware register functions to handle
power-down operations. At present, separate functions are registered to
power down individual cores and clusters.

This scheme operates on the basis of core and cluster, and doesn't cater
for extending the hierarchy for power-down operations. For example,
future CPUs might support multiple threads which might need powering
down individually.

This patch therefore reworks the CPU operations framework to allow for
registering power down handlers on specific level basis. Henceforth:

  - Generic code invokes CPU power down operations by the level
    required.

  - CPU drivers explicitly mention CPU_NO_RESET_FUNC when the CPU has no
    reset function.

  - CPU drivers register power down handlers as a list: a mandatory
    handler for level 0, and optional handlers for higher levels.

All existing CPU drivers are adapted to the new CPU operations framework
without needing any functional changes within.

Also update firmware design guide.

Change-Id: I1826842d37a9e60a9e85fdcee7b4b8f6bc1ad043
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
1 parent a4af0c2 commit 5dd9dbb5bfe64b1eb2e78648f3a2e900678ef433
@Jeenu Viswambharan Jeenu Viswambharan authored on 18 Nov 2016
Showing 16 changed files
View
docs/firmware-design.md
View
include/lib/cpus/aarch32/cpu_macros.S
View
include/lib/cpus/aarch64/cpu_macros.S
View
lib/cpus/aarch32/aem_generic.S
View
lib/cpus/aarch32/cortex_a32.S
View
lib/cpus/aarch32/cpu_helpers.S
View
lib/cpus/aarch64/aem_generic.S
View
lib/cpus/aarch64/cortex_a35.S
View
lib/cpus/aarch64/cortex_a53.S
View
lib/cpus/aarch64/cortex_a57.S
View
lib/cpus/aarch64/cortex_a72.S
View
lib/cpus/aarch64/cortex_a73.S
View
lib/cpus/aarch64/cpu_helpers.S
View
lib/cpus/aarch64/denver.S
View
lib/psci/aarch32/psci_helpers.S
View
lib/psci/aarch64/psci_helpers.S