armv8: fsl-layerscape: Update README.falcon for compression
[oweals/u-boot.git] / arch / arm / cpu / armv8 / fwcall.c
index 64539f9cc61f03022d7114e2f5566dcca654f0b8..0ba3dad8cc5e70f1640a5c9129ed898f588e04a9 100644 (file)
@@ -1,7 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0+
 /**
  * (C) Copyright 2014, Cavium Inc.
+ * (C) Copyright 2017, Xilinx Inc.
  *
- * SPDX-License-Identifier:    GPL-2.0+
 **/
 
 #include <asm-offsets.h>
@@ -18,7 +19,7 @@
  * x0~x7: input arguments
  * x0~x3: output arguments
  */
-static void EFI_RUNTIME_TEXT hvc_call(struct pt_regs *args)
+static void __efi_runtime hvc_call(struct pt_regs *args)
 {
        asm volatile(
                "ldr x0, %0\n"
@@ -52,7 +53,7 @@ static void EFI_RUNTIME_TEXT hvc_call(struct pt_regs *args)
  * x0~x3: output arguments
  */
 
-void EFI_RUNTIME_TEXT smc_call(struct pt_regs *args)
+void __efi_runtime smc_call(struct pt_regs *args)
 {
        asm volatile(
                "ldr x0, %0\n"
@@ -82,9 +83,9 @@ void EFI_RUNTIME_TEXT smc_call(struct pt_regs *args)
  * use PSCI on U-Boot running below a hypervisor, please detect
  * this and set the flag accordingly.
  */
-static const EFI_RUNTIME_DATA bool use_smc_for_psci = true;
+static const __efi_runtime_data bool use_smc_for_psci = true;
 
-void __noreturn EFI_RUNTIME_TEXT psci_system_reset(void)
+void __noreturn __efi_runtime psci_system_reset(void)
 {
        struct pt_regs regs;
 
@@ -99,7 +100,7 @@ void __noreturn EFI_RUNTIME_TEXT psci_system_reset(void)
                ;
 }
 
-void __noreturn EFI_RUNTIME_TEXT psci_system_off(void)
+void __noreturn __efi_runtime psci_system_off(void)
 {
        struct pt_regs regs;
 
@@ -114,6 +115,22 @@ void __noreturn EFI_RUNTIME_TEXT psci_system_off(void)
                ;
 }
 
+#ifdef CONFIG_CMD_POWEROFF
+int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       puts("poweroff ...\n");
+
+       udelay(50000); /* wait 50 ms */
+
+       disable_interrupts();
+
+       psci_system_off();
+
+       /*NOTREACHED*/
+       return 0;
+}
+#endif
+
 #ifdef CONFIG_PSCI_RESET
 void reset_misc(void)
 {
@@ -121,19 +138,17 @@ void reset_misc(void)
 }
 
 #ifdef CONFIG_EFI_LOADER
-void EFI_RUNTIME_TEXT EFIAPI efi_reset_system(
+void __efi_runtime EFIAPI efi_reset_system(
                        enum efi_reset_type reset_type,
                        efi_status_t reset_status,
                        unsigned long data_size, void *reset_data)
 {
-       switch (reset_type) {
-       case EFI_RESET_COLD:
-       case EFI_RESET_WARM:
+       if (reset_type == EFI_RESET_COLD ||
+           reset_type == EFI_RESET_WARM ||
+           reset_type == EFI_RESET_PLATFORM_SPECIFIC) {
                psci_system_reset();
-               break;
-       case EFI_RESET_SHUTDOWN:
+       } else if (reset_type == EFI_RESET_SHUTDOWN) {
                psci_system_off();
-               break;
        }
 
        while (1) { }