summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv8/fwcall.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2016-08-16 21:08:47 +0200
committerAlexander Graf <agraf@suse.de>2016-10-18 09:08:08 +0200
commit3ee655ed83ada67912cbbd14b6685bc0c7102553 (patch)
treebb700ca0e2c742b2f2422a47ff7aa8b27e05c307 /arch/arm/cpu/armv8/fwcall.c
parent51bfb5b6f522b1fbe453c18df03648d72b08131f (diff)
downloadu-boot-3ee655ed83ada67912cbbd14b6685bc0c7102553.tar.gz
arm: Add PSCI shutdown function
Using PSCI you can not only reset the system, you can also shut it down! This patch exposes a function to do exactly that to whatever code wants to make use of it. Signed-off-by: Alexander Graf <agraf@suse.de> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/arm/cpu/armv8/fwcall.c')
-rw-r--r--arch/arm/cpu/armv8/fwcall.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c
index 6bb68f2ed3..b3ef7c0f73 100644
--- a/arch/arm/cpu/armv8/fwcall.c
+++ b/arch/arm/cpu/armv8/fwcall.c
@@ -97,3 +97,18 @@ void __noreturn psci_system_reset(void)
while (1)
;
}
+
+void __noreturn psci_system_off(void)
+{
+ struct pt_regs regs;
+
+ regs.regs[0] = ARM_PSCI_0_2_FN_SYSTEM_OFF;
+
+ if (use_smc_for_psci)
+ smc_call(&regs);
+ else
+ hvc_call(&regs);
+
+ while (1)
+ ;
+}