aboutsummaryrefslogtreecommitdiff
path: root/plat/hisilicon
diff options
context:
space:
mode:
authorHaojian Zhuang <haojian.zhuang@linaro.org>2018-03-26 13:18:13 +0800
committerHaojian Zhuang <haojian.zhuang@linaro.org>2018-03-28 08:30:31 +0800
commit7dcef5ebbbb969ebf6397b640c0b81dc6dc2ef75 (patch)
treeb77bba2ade654e9ba0d712f3e3b654de2895e3fa /plat/hisilicon
parentba7848e283cd11326f60f3a3084c142875f3ec41 (diff)
downloadtrusted-firmware-a-7dcef5ebbbb969ebf6397b640c0b81dc6dc2ef75.tar.gz
hikey960: add delay before reset
If system is still accessing storage device, reboot operation may cause data broken. So add the flush and delay operation before system reset. Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Diffstat (limited to 'plat/hisilicon')
-rw-r--r--plat/hisilicon/hikey960/hikey960_pm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/plat/hisilicon/hikey960/hikey960_pm.c b/plat/hisilicon/hikey960/hikey960_pm.c
index 22963c4f52..ffe7fcf87f 100644
--- a/plat/hisilicon/hikey960/hikey960_pm.c
+++ b/plat/hisilicon/hikey960/hikey960_pm.c
@@ -9,6 +9,7 @@
#include <cci.h>
#include <console.h>
#include <debug.h>
+#include <delay_timer.h>
#include <gicv2.h>
#include <hi3660.h>
#include <hi3660_crg.h>
@@ -114,6 +115,9 @@ void hikey960_pwr_domain_off(const psci_power_state_t *target_state)
static void __dead2 hikey960_system_reset(void)
{
+ dsb();
+ isb();
+ mdelay(2000);
mmio_write_32(SCTRL_SCPEREN1_REG,
SCPEREN1_WAIT_DDR_SELFREFRESH_DONE_BYPASS);
mmio_write_32(SCTRL_SCSYSSTAT_REG, 0xdeadbeef);