From e7e4b7dfb3dab677dd6463fb1c28e6a2f4538ebd Mon Sep 17 00:00:00 2001 From: Emekcan Aras Date: Fri, 3 Dec 2021 12:28:54 +0000 Subject: [PATCH] arm-bsp/trusted firmware-a: corstone1000: implement EFI reset system This commit implements efi_reset_system for corstone1000 platform. In order to reset the system, the host uses secure host watchdog to assert an interrupt (WS1) on the secure-enclave side, then secure-enclave resets the system. Change-Id: I772181cd43e789f1d6508aaa433eb109d8f85b5d Signed-off-by: Emekcan Aras Signed-off-by: Jon Mason --- ...plement-platform-specific-psci-reset.patch | 60 +++++++++++++++++++ .../trusted-firmware-a-corstone1000.inc | 1 + 2 files changed, 61 insertions(+) create mode 100644 meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-corstone1000-implement-platform-specific-psci-reset.patch diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-corstone1000-implement-platform-specific-psci-reset.patch b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-corstone1000-implement-platform-specific-psci-reset.patch new file mode 100644 index 00000000..98f2e633 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-corstone1000-implement-platform-specific-psci-reset.patch @@ -0,0 +1,60 @@ +Upstream-Status: Pending [Not submitted to upstream yet] +Signed-off-by: Emekcan Aras + +From 1b99c6dd614002a79e4dda96d630089775a1d233 Mon Sep 17 00:00:00 2001 +From: Emekcan Aras +Date: Wed, 17 Nov 2021 18:45:32 +0000 +Subject: [PATCH] corstone1000: implement platform specific psci reset + +This implements platform specific psci reset for the corstone1000. +Signed-off-by: Emekcan Aras +--- + .../corstone1000/common/corstone1000_pm.c | 23 +++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/plat/arm/board/corstone1000/common/corstone1000_pm.c b/plat/arm/board/corstone1000/common/corstone1000_pm.c +index 12b322e27..e95ab30b7 100644 +--- a/plat/arm/board/corstone1000/common/corstone1000_pm.c ++++ b/plat/arm/board/corstone1000/common/corstone1000_pm.c +@@ -6,17 +6,36 @@ + + #include + #include +- + /******************************************************************************* + * Export the platform handlers via plat_arm_psci_pm_ops. The ARM Standard + * platform layer will take care of registering the handlers with PSCI. + ******************************************************************************/ ++ ++#define SECURE_WATCHDOG_ADDR_CTRL_REG 0x1A320000 ++#define SECURE_WATCHDOG_ADDR_VAL_REG 0x1A320008 ++#define SECURE_WATCHDOG_MASK_ENABLE 0x01 ++#define SECURE_WATCHDOG_COUNTDOWN_VAL 0x1000 ++ ++static void __dead2 corstone1000_system_reset(void) ++{ ++ ++ uint32_t volatile * const watchdog_ctrl_reg = (int *) SECURE_WATCHDOG_ADDR_CTRL_REG; ++ uint32_t volatile * const watchdog_val_reg = (int *) SECURE_WATCHDOG_ADDR_VAL_REG; ++ ++ *(watchdog_val_reg) = SECURE_WATCHDOG_COUNTDOWN_VAL; ++ *watchdog_ctrl_reg = SECURE_WATCHDOG_MASK_ENABLE; ++ while (1){ ++ wfi(); ++ } ++} ++ + plat_psci_ops_t plat_arm_psci_pm_ops = { +- /* dummy struct */ ++ .system_reset = corstone1000_system_reset, + .validate_ns_entrypoint = NULL + }; + + const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops) + { ++ ops = &plat_arm_psci_pm_ops; + return ops; + } +-- +2.25.1 + diff --git a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc index 32546bb3..e0ec8b35 100644 --- a/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc +++ b/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc @@ -14,6 +14,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files/corstone1000:" SRC_URI:append = " \ file://0001-Rename-Diphda-to-corstone1000.patch \ file://0002-plat-arm-corstone1000-made-changes-to-accommodate-3M.patch \ + file://0003-corstone1000-implement-platform-specific-psci-reset.patch \ " TFA_DEBUG = "1"