diff --git a/board/qca/arm/ipq6018/ipq6018.c b/board/qca/arm/ipq6018/ipq6018.c index 6aeaa7a0bf..c2c43922cf 100644 --- a/board/qca/arm/ipq6018/ipq6018.c +++ b/board/qca/arm/ipq6018/ipq6018.c @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include @@ -738,8 +740,28 @@ unsigned long timer_read_counter(void) return 0; } +void psci_sys_reset(void) +{ + __invoke_psci_fn_smc(0x84000009, 0, 0, 0); +} + +void qti_scm_pshold(void) +{ + int ret; + + ret = scm_call(SCM_SVC_BOOT, SCM_CMD_TZ_PSHOLD, NULL, 0, NULL, 0); + if (ret != 0) + writel(0, GCNT_PSHOLD); +} + void reset_cpu(unsigned long a) { + reset_crashdump(); + if (is_scm_armv8()) { + psci_sys_reset(); + } else { + qti_scm_pshold(); + } while(1); } diff --git a/include/configs/ipq6018.h b/include/configs/ipq6018.h index 7565eaf03e..4ba2644d96 100644 --- a/include/configs/ipq6018.h +++ b/include/configs/ipq6018.h @@ -295,4 +295,10 @@ extern loff_t board_env_size; * By default we are disabling it */ /*#define CONFIG_IPQ_REPORT_L2ERR*/ +/* + * Other commands + */ + +#define CONFIG_ARMV7_PSCI + #endif /* _IPQ6018_H */