diff mbox

[U-Boot] ARM: uniphier: support system reset functionality for PSCI

Message ID 1472126621-12929-1-git-send-email-yamada.masahiro@socionext.com
State Accepted
Delegated to: Masahiro Yamada
Headers show

Commit Message

Masahiro Yamada Aug. 25, 2016, 12:03 p.m. UTC
This supports the system reset via PSCI for ARMv7 SoCs.

Because the system reset is not supported on PSCI 0.1, let's define
CONFIG_ARMV7_PSCI_1_0. (it is supported since PSCI 0.2, but there
is no CONFIG to enable it in U-Boot for now.)

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 arch/arm/mach-uniphier/arm32/psci.c |  5 +++++
 arch/arm/mach-uniphier/reset.c      | 10 +++++++++-
 include/configs/uniphier.h          |  1 +
 3 files changed, 15 insertions(+), 1 deletion(-)

Comments

Masahiro Yamada Aug. 28, 2016, 4:20 a.m. UTC | #1
2016-08-25 21:03 GMT+09:00 Masahiro Yamada <yamada.masahiro@socionext.com>:
> This supports the system reset via PSCI for ARMv7 SoCs.
>
> Because the system reset is not supported on PSCI 0.1, let's define
> CONFIG_ARMV7_PSCI_1_0. (it is supported since PSCI 0.2, but there
> is no CONFIG to enable it in U-Boot for now.)
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
>  arch/arm/mach-uniphier/arm32/psci.c |  5 +++++
>  arch/arm/mach-uniphier/reset.c      | 10 +++++++++-
>  include/configs/uniphier.h          |  1 +
>  3 files changed, 15 insertions(+), 1 deletion(-)
>


Applied to u-boot-uniphier/master.
diff mbox

Patch

diff --git a/arch/arm/mach-uniphier/arm32/psci.c b/arch/arm/mach-uniphier/arm32/psci.c
index 633a3e0..e668265 100644
--- a/arch/arm/mach-uniphier/arm32/psci.c
+++ b/arch/arm/mach-uniphier/arm32/psci.c
@@ -151,3 +151,8 @@  int __secure psci_cpu_on(u32 function_id, u32 cpuid, u32 entry_point)
 
 	return PSCI_RET_SUCCESS;
 }
+
+void __secure psci_system_reset(u32 function_id)
+{
+	reset_cpu(0);
+}
diff --git a/arch/arm/mach-uniphier/reset.c b/arch/arm/mach-uniphier/reset.c
index b5825bc..af5ad14 100644
--- a/arch/arm/mach-uniphier/reset.c
+++ b/arch/arm/mach-uniphier/reset.c
@@ -6,10 +6,18 @@ 
 
 #include <common.h>
 #include <linux/io.h>
+#include <asm/secure.h>
 
 #include "sc-regs.h"
 
-void reset_cpu(unsigned long ignored)
+/* If PSCI is enabled, this is used for SYSTEM_RESET function */
+#ifdef CONFIG_ARMV7_PSCI
+#define __SECURE	__secure
+#else
+#define __SECURE
+#endif
+
+void __SECURE reset_cpu(unsigned long ignored)
 {
 	u32 tmp;
 
diff --git a/include/configs/uniphier.h b/include/configs/uniphier.h
index 0f5b20f..184704b 100644
--- a/include/configs/uniphier.h
+++ b/include/configs/uniphier.h
@@ -12,6 +12,7 @@ 
 #define __CONFIG_UNIPHIER_COMMON_H__
 
 #define CONFIG_ARMV7_PSCI
+#define CONFIG_ARMV7_PSCI_1_0
 #define CONFIG_ARMV7_PSCI_NR_CPUS   4
 
 #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10