Add support for calling poweroff in case of psci is wired. Based on the same solution as is used for reset.
Signed-off-by: Michal Simek <michal.si...@xilinx.com> --- arch/arm/cpu/armv8/fwcall.c | 7 +++++++ arch/arm/lib/Makefile | 1 + arch/arm/lib/poweroff.c | 47 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 arch/arm/lib/poweroff.c diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c index 7dfd27002916..af716cac4094 100644 --- a/arch/arm/cpu/armv8/fwcall.c +++ b/arch/arm/cpu/armv8/fwcall.c @@ -114,6 +114,13 @@ void __noreturn __efi_runtime psci_system_off(void) ; } +#ifdef CONFIG_CMD_POWEROFF +void poweroff_misc(void) +{ + psci_system_off(); +} +#endif + #ifdef CONFIG_PSCI_RESET void reset_misc(void) { diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index f162c1428c85..c3d4248ba3eb 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -55,6 +55,7 @@ endif ifndef CONFIG_SYSRESET obj-y += reset.o endif +obj-$(CONFIG_CMD_POWEROFF) += poweroff.o obj-y += cache.o ifndef CONFIG_ARM64 diff --git a/arch/arm/lib/poweroff.c b/arch/arm/lib/poweroff.c new file mode 100644 index 000000000000..956d2c06af66 --- /dev/null +++ b/arch/arm/lib/poweroff.c @@ -0,0 +1,47 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroe...@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <a...@sysgo.de> + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <ga...@denx.de> + * + * (C) Copyright 2004 + * DAVE Srl + * http://www.dave-tech.it + * http://www.wawnet.biz + * mailto:i...@wawnet.biz + * + * (C) Copyright 2004 Texas Insturments + * + * (C) Copyright 2017, Xilinx Inc. + * + * Based on reset.c + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> + +__weak void poweroff_misc(void) +{ +} + +int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + puts("poweroff ...\n"); + + udelay(50000); /* wait 50 ms */ + + disable_interrupts(); + + poweroff_misc(); + + /*NOTREACHED*/ + return 0; +} + -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot