From 351e3731cacf9c36f94a80e0bee6af021bed7faf Mon Sep 17 00:00:00 2001 From: Anson Huang Date: Thu, 12 Jul 2018 11:04:15 +0800 Subject: [PATCH] imx: imx8qx: add system reset support Add system reset support for i.MX8QX, when Linux kernel issues "reboot" command, TF-A will send command to inform system controller to reset whole board according to board design, tested on i.MX8QX MEK board. Signed-off-by: Anson Huang --- plat/imx/common/imx8_psci.c | 7 +++++++ plat/imx/common/include/plat_imx8.h | 1 + plat/imx/imx8qx/imx8qx_psci.c | 1 + 3 files changed, 9 insertions(+) diff --git a/plat/imx/common/imx8_psci.c b/plat/imx/common/imx8_psci.c index 0b0dcb577..37eda3e6a 100644 --- a/plat/imx/common/imx8_psci.c +++ b/plat/imx/common/imx8_psci.c @@ -19,4 +19,11 @@ void __dead2 imx_system_off(void) panic(); } +void __dead2 imx_system_reset(void) +{ + sc_pm_reset(ipc_handle, SC_PM_RESET_TYPE_BOARD); + wfi(); + ERROR("system reset failed.\n"); + panic(); +} diff --git a/plat/imx/common/include/plat_imx8.h b/plat/imx/common/include/plat_imx8.h index 640d60e76..3b5f4ec6b 100644 --- a/plat/imx/common/include/plat_imx8.h +++ b/plat/imx/common/include/plat_imx8.h @@ -18,4 +18,5 @@ void plat_gic_cpuif_disable(void); void plat_gic_pcpu_init(void); void __dead2 imx_system_off(void); +void __dead2 imx_system_reset(void); #endif /*__PLAT_IMX8_H__ */ diff --git a/plat/imx/imx8qx/imx8qx_psci.c b/plat/imx/imx8qx/imx8qx_psci.c index 1e8f7fa49..80f747b19 100644 --- a/plat/imx/imx8qx/imx8qx_psci.c +++ b/plat/imx/imx8qx/imx8qx_psci.c @@ -65,6 +65,7 @@ static const plat_psci_ops_t imx_plat_psci_ops = { .pwr_domain_on_finish = imx_pwr_domain_on_finish, .validate_ns_entrypoint = imx_validate_ns_entrypoint, .system_off = imx_system_off, + .system_reset = imx_system_reset, }; int plat_setup_psci_ops(uintptr_t sec_entrypoint,