summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManish Pandey <manish.pandey2@arm.com>2023-05-11 11:09:09 +0200
committerTrustedFirmware Code Review <review@review.trustedfirmware.org>2023-05-11 11:09:09 +0200
commit9d44b2b98119cf3b0a31926201267ea88332c235 (patch)
tree6f655dc119f986fc30035c90d8216e283c5b5475
parent5bfdb732705f964bb8ef09753a2112b65851f476 (diff)
parent5bdafc4099b446609965f9132e6c52a7bdeb9ac8 (diff)
downloadarm-trusted-firmware-9d44b2b98119cf3b0a31926201267ea88332c235.tar.gz
Merge "fix(n1sdp): add platform-specific power domain functions" into integration
-rw-r--r--plat/arm/board/n1sdp/n1sdp_bl31_setup.c5
-rw-r--r--plat/arm/board/n1sdp/n1sdp_pm.c29
-rw-r--r--plat/arm/board/n1sdp/n1sdp_private.h15
-rw-r--r--plat/arm/board/n1sdp/platform.mk1
4 files changed, 49 insertions, 1 deletions
diff --git a/plat/arm/board/n1sdp/n1sdp_bl31_setup.c b/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
index bd0566006..db7215f43 100644
--- a/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
+++ b/plat/arm/board/n1sdp/n1sdp_bl31_setup.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2023, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -14,6 +14,7 @@
#include <plat/arm/common/plat_arm.h>
#include "n1sdp_def.h"
+#include "n1sdp_private.h"
#include <platform_def.h>
/*
@@ -69,6 +70,8 @@ scmi_channel_plat_info_t *plat_css_get_scmi_info(unsigned int channel_id)
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
{
+ ops->pwr_domain_off = n1sdp_pwr_domain_off;
+ ops->pwr_domain_suspend = n1sdp_pwr_domain_suspend;
return css_scmi_override_pm_ops(ops);
}
diff --git a/plat/arm/board/n1sdp/n1sdp_pm.c b/plat/arm/board/n1sdp/n1sdp_pm.c
new file mode 100644
index 000000000..e43832a23
--- /dev/null
+++ b/plat/arm/board/n1sdp/n1sdp_pm.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <lib/psci/psci.h>
+#include <plat/arm/common/plat_arm.h>
+#include <plat/arm/css/common/css_pm.h>
+
+#include "n1sdp_private.h"
+
+/*******************************************************************************
+ * N1SDP specific functions called when turning off or suspending a power
+ * domain. Both additionally disable the GIC redistributor interface as cores
+ * are disabled to let cluster-PPU state transition to completion when a
+ * cluster is powered down.
+ ******************************************************************************/
+void n1sdp_pwr_domain_off(const psci_power_state_t *target_state)
+{
+ css_pwr_domain_off(target_state);
+ plat_arm_gic_redistif_off();
+}
+
+void n1sdp_pwr_domain_suspend(const psci_power_state_t *target_state)
+{
+ css_pwr_domain_suspend(target_state);
+ plat_arm_gic_redistif_off();
+}
diff --git a/plat/arm/board/n1sdp/n1sdp_private.h b/plat/arm/board/n1sdp/n1sdp_private.h
new file mode 100644
index 000000000..7a5c51d97
--- /dev/null
+++ b/plat/arm/board/n1sdp/n1sdp_private.h
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef N1SDP_PRIVATE_H
+#define N1SDP_PRIVATE_H
+
+#include <lib/psci/psci.h>
+
+void n1sdp_pwr_domain_off(const psci_power_state_t *target_state);
+void n1sdp_pwr_domain_suspend(const psci_power_state_t *target_state);
+
+#endif /* N1SDP_PRIVATE_H */
diff --git a/plat/arm/board/n1sdp/platform.mk b/plat/arm/board/n1sdp/platform.mk
index 9c0cc022c..bd6261454 100644
--- a/plat/arm/board/n1sdp/platform.mk
+++ b/plat/arm/board/n1sdp/platform.mk
@@ -47,6 +47,7 @@ BL31_SOURCES := ${N1SDP_CPU_SOURCES} \
${INTERCONNECT_SOURCES} \
${N1SDP_GIC_SOURCES} \
${N1SDP_BASE}/n1sdp_bl31_setup.c \
+ ${N1SDP_BASE}/n1sdp_pm.c \
${N1SDP_BASE}/n1sdp_topology.c \
${N1SDP_BASE}/n1sdp_security.c \
drivers/arm/css/sds/sds.c