aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahisa Kojima <masahisa.kojima@linaro.org>2021-08-03 16:48:53 +0900
committerMasahisa Kojima <masahisa.kojima@linaro.org>2021-09-14 11:24:30 +0900
commitf7f5d2c4cd209c2d21244da4fa442050eb4531ab (patch)
treeffc23be9e71da3f383c7c8dcbe49151ff4cc5e36
parent6ea1a75df34c9beed4609b84544d473b8d5690e7 (diff)
downloadtrusted-firmware-a-f7f5d2c4cd209c2d21244da4fa442050eb4531ab.tar.gz
fix(plat/synquacer): update scmi power domain off handling
In the SCMI power domain off handling, configure GIC to prevent interrupt toward to the core to be turned off, and configure CCN to disable coherency when the cluster is turned off. The same operation is done in SCPI power domain off processing. This commit adds the missing operation in SCMI power domain off handling. Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org> Change-Id: Ib3523de488500c2e8bdc74e4cb8772a1442d9781
-rw-r--r--plat/socionext/synquacer/sq_psci.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/plat/socionext/synquacer/sq_psci.c b/plat/socionext/synquacer/sq_psci.c
index 0c97fcf79f..4168df9daf 100644
--- a/plat/socionext/synquacer/sq_psci.c
+++ b/plat/socionext/synquacer/sq_psci.c
@@ -97,6 +97,14 @@ static void sq_power_down_common(const psci_power_state_t *target_state)
void sq_pwr_domain_off(const psci_power_state_t *target_state)
{
#if SQ_USE_SCMI_DRIVER
+ /* Prevent interrupts from spuriously waking up this cpu */
+ sq_gic_cpuif_disable();
+
+ /* Cluster is to be turned off, so disable coherency */
+ if (SQ_CLUSTER_PWR_STATE(target_state) == SQ_LOCAL_STATE_OFF) {
+ plat_sq_interconnect_exit_coherency();
+ }
+
sq_scmi_off(target_state);
#else
sq_power_down_common(target_state);