diff options
author | Manish Pandey <manish.pandey2@arm.com> | 2023-05-11 11:09:09 +0200 |
---|---|---|
committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2023-05-11 11:09:09 +0200 |
commit | 9d44b2b98119cf3b0a31926201267ea88332c235 (patch) | |
tree | 6f655dc119f986fc30035c90d8216e283c5b5475 /plat/arm | |
parent | 5bfdb732705f964bb8ef09753a2112b65851f476 (diff) | |
parent | 5bdafc4099b446609965f9132e6c52a7bdeb9ac8 (diff) | |
download | arm-trusted-firmware-9d44b2b98119cf3b0a31926201267ea88332c235.tar.gz |
Merge "fix(n1sdp): add platform-specific power domain functions" into integration
Diffstat (limited to 'plat/arm')
-rw-r--r-- | plat/arm/board/n1sdp/n1sdp_bl31_setup.c | 5 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/n1sdp_pm.c | 29 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/n1sdp_private.h | 15 | ||||
-rw-r--r-- | plat/arm/board/n1sdp/platform.mk | 1 |
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 |