plat/arm: remove weak implemention of 'plat_arm_psci_override_pm_ops' function
In order to allow Arm platforms to override the default list of PSCI callbacks, remove the existing weak implementation of 'plat_arm_psci_override_pm_ops' function and let all the Arm platforms implement their own 'plat_arm_psci_override_pm_ops' function. For platforms that support SCMI protocol, the function 'css_scmi_override_pm_ops' can be additionally used as well to override the default PSCI callbacks. Change-Id: If7c27468bd51a00ea9c2a3716b5894163f5a9f3c Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
This commit is contained in:
parent
9345d9a0d9
commit
89f2e58985
|
@ -416,3 +416,8 @@ plat_psci_ops_t plat_arm_psci_pm_ops = {
|
||||||
.read_mem_protect = arm_psci_read_mem_protect,
|
.read_mem_protect = arm_psci_read_mem_protect,
|
||||||
.write_mem_protect = arm_nor_psci_write_mem_protect,
|
.write_mem_protect = arm_nor_psci_write_mem_protect,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
|
{
|
||||||
|
return ops;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <plat_arm.h>
|
||||||
|
#include <scmi.h>
|
||||||
|
|
||||||
|
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
|
{
|
||||||
|
return css_scmi_override_pm_ops(ops);
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ endif
|
||||||
CSS_USE_SCMI_SDS_DRIVER := 1
|
CSS_USE_SCMI_SDS_DRIVER := 1
|
||||||
|
|
||||||
PLAT_INCLUDES := -Iplat/arm/board/juno/include \
|
PLAT_INCLUDES := -Iplat/arm/board/juno/include \
|
||||||
|
-Iplat/arm/css/drivers/scmi \
|
||||||
-Iplat/arm/css/drivers/sds
|
-Iplat/arm/css/drivers/sds
|
||||||
|
|
||||||
PLAT_BL_COMMON_SOURCES := plat/arm/board/juno/${ARCH}/juno_helpers.S \
|
PLAT_BL_COMMON_SOURCES := plat/arm/board/juno/${ARCH}/juno_helpers.S \
|
||||||
|
@ -79,6 +80,7 @@ BL31_SOURCES += drivers/cfi/v2m/v2m_flash.c \
|
||||||
lib/cpus/aarch64/cortex_a57.S \
|
lib/cpus/aarch64/cortex_a57.S \
|
||||||
lib/cpus/aarch64/cortex_a72.S \
|
lib/cpus/aarch64/cortex_a72.S \
|
||||||
lib/utils/mem_region.c \
|
lib/utils/mem_region.c \
|
||||||
|
plat/arm/board/juno/juno_pm.c \
|
||||||
plat/arm/board/juno/juno_topology.c \
|
plat/arm/board/juno/juno_topology.c \
|
||||||
plat/arm/common/arm_nor_psci_mem_protect.c \
|
plat/arm/common/arm_nor_psci_mem_protect.c \
|
||||||
${JUNO_GIC_SOURCES} \
|
${JUNO_GIC_SOURCES} \
|
||||||
|
|
|
@ -10,6 +10,7 @@ BL32_SOURCES += drivers/cfi/v2m/v2m_flash.c \
|
||||||
lib/cpus/aarch32/cortex_a57.S \
|
lib/cpus/aarch32/cortex_a57.S \
|
||||||
lib/cpus/aarch32/cortex_a72.S \
|
lib/cpus/aarch32/cortex_a72.S \
|
||||||
lib/utils/mem_region.c \
|
lib/utils/mem_region.c \
|
||||||
|
plat/arm/board/juno/juno_pm.c \
|
||||||
plat/arm/board/juno/juno_topology.c \
|
plat/arm/board/juno/juno_topology.c \
|
||||||
plat/arm/common/arm_nor_psci_mem_protect.c \
|
plat/arm/common/arm_nor_psci_mem_protect.c \
|
||||||
plat/arm/soc/common/soc_css_security.c \
|
plat/arm/soc/common/soc_css_security.c \
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include "../../css/drivers/scmi/scmi.h"
|
#include "../../css/drivers/scmi/scmi.h"
|
||||||
#include "../../css/drivers/mhu/css_mhu_doorbell.h"
|
#include "../../css/drivers/mhu/css_mhu_doorbell.h"
|
||||||
|
#include <plat_arm.h>
|
||||||
#include <platform_def.h>
|
#include <platform_def.h>
|
||||||
|
|
||||||
static scmi_channel_plat_info_t n1sdp_scmi_plat_info = {
|
static scmi_channel_plat_info_t n1sdp_scmi_plat_info = {
|
||||||
|
@ -20,3 +21,8 @@ scmi_channel_plat_info_t *plat_css_get_scmi_info()
|
||||||
{
|
{
|
||||||
return &n1sdp_scmi_plat_info;
|
return &n1sdp_scmi_plat_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
|
{
|
||||||
|
return css_scmi_override_pm_ops(ops);
|
||||||
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <psci.h>
|
#include <psci.h>
|
||||||
|
|
||||||
/* Allow ARM Standard platforms to override these functions */
|
/* Allow ARM Standard platforms to override these functions */
|
||||||
#pragma weak plat_arm_psci_override_pm_ops
|
|
||||||
#pragma weak plat_arm_program_trusted_mailbox
|
#pragma weak plat_arm_program_trusted_mailbox
|
||||||
|
|
||||||
#if !ARM_RECOM_STATE_ID_ENC
|
#if !ARM_RECOM_STATE_ID_ENC
|
||||||
|
@ -132,14 +131,6 @@ int arm_validate_psci_entrypoint(uintptr_t entrypoint)
|
||||||
PSCI_E_INVALID_ADDRESS;
|
PSCI_E_INVALID_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* Default definition on ARM standard platforms to override the plat_psci_ops.
|
|
||||||
*****************************************************************************/
|
|
||||||
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
|
||||||
{
|
|
||||||
return ops;
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Helper function to save the platform state before a system suspend. Save the
|
* Helper function to save the platform state before a system suspend. Save the
|
||||||
* state of the system components which are not in the Always ON power domain.
|
* state of the system components which are not in the Always ON power domain.
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#define SCMI_H
|
#define SCMI_H
|
||||||
|
|
||||||
#include <bakery_lock.h>
|
#include <bakery_lock.h>
|
||||||
|
#include <psci.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <spinlock.h>
|
#include <spinlock.h>
|
||||||
|
@ -162,4 +163,7 @@ int scmi_ap_core_get_reset_addr(void *p, uint64_t *reset_addr, uint32_t *attr);
|
||||||
/* API to get the platform specific SCMI channel information. */
|
/* API to get the platform specific SCMI channel information. */
|
||||||
scmi_channel_plat_info_t *plat_css_get_scmi_info();
|
scmi_channel_plat_info_t *plat_css_get_scmi_info();
|
||||||
|
|
||||||
|
/* API to override default PSCI callbacks for platforms that support SCMI. */
|
||||||
|
const plat_psci_ops_t *css_scmi_override_pm_ops(plat_psci_ops_t *ops);
|
||||||
|
|
||||||
#endif /* SCMI_H */
|
#endif /* SCMI_H */
|
||||||
|
|
|
@ -339,7 +339,7 @@ void __init plat_arm_pwrc_setup(void)
|
||||||
* the SCMI driver, query capability via SCMI and modify the PSCI capability
|
* the SCMI driver, query capability via SCMI and modify the PSCI capability
|
||||||
* based on that.
|
* based on that.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
const plat_psci_ops_t *css_scmi_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
{
|
{
|
||||||
uint32_t msg_attr;
|
uint32_t msg_attr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -101,3 +101,8 @@ void bl31_platform_setup(void)
|
||||||
sgi_ras_intr_handler_setup();
|
sgi_ras_intr_handler_setup();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
|
{
|
||||||
|
return css_scmi_override_pm_ops(ops);
|
||||||
|
}
|
||||||
|
|
|
@ -47,3 +47,8 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
|
||||||
|
|
||||||
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
arm_bl31_early_platform_setup((void *)arg0, arg1, arg2, (void *)arg3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const plat_psci_ops_t *plat_arm_psci_override_pm_ops(plat_psci_ops_t *ops)
|
||||||
|
{
|
||||||
|
return css_scmi_override_pm_ops(ops);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue