From ac9b02dd1028d14b6326970c93dfc3c50daa16f1 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Fri, 17 Oct 2025 17:32:34 +0800 Subject: firmware: scmi: Add i.MX95 SCMI CPU Protocol This protocol allows an agent to start, stop a CPU or set reset vector. It is used to manage auxiliary CPUs in an LM (e.g. additional cores in an AP cluster). Signed-off-by: Peng Fan Reviewed-by: Alice Guo --- include/scmi_nxp_protocols.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'include') diff --git a/include/scmi_nxp_protocols.h b/include/scmi_nxp_protocols.h index 1c79bc2282b..c17f3663eba 100644 --- a/include/scmi_nxp_protocols.h +++ b/include/scmi_nxp_protocols.h @@ -10,6 +10,7 @@ #include #define SCMI_PROTOCOL_ID_IMX_LMM 0x80 +#define SCMI_PROTOCOL_ID_IMX_CPU 0x82 #define SCMI_PROTOCOL_ID_IMX_MISC 0x84 #define SCMI_PAYLOAD_LEN 100 @@ -95,4 +96,27 @@ static inline int scmi_imx_lmm_shutdown(struct udevice *dev, u32 lmid, bool flag return -EOPNOTSUPP; } #endif + +#if IS_ENABLED(CONFIG_IMX_SM_CPU) +int scmi_imx_cpu_started(struct udevice *dev, u32 cpuid, bool *started); +int scmi_imx_cpu_reset_vector_set(struct udevice *dev, u32 cpuid, u32 flags, u64 vector, + bool start, bool boot, bool resume); +int scmi_imx_cpu_start(struct udevice *dev, u32 cpuid, bool start); +#else +static inline int scmi_imx_cpu_started(struct udevice *dev, u32 cpuid, bool *started) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_cpu_reset_vector_set(struct udevice *dev, u32 cpuid, u32 flags, + u64 vector, bool start, bool boot, bool resume) +{ + return -EOPNOTSUPP; +} + +static inline int scmi_imx_cpu_start(struct udevice *dev, u32 cpuid, bool start) +{ + return -EOPNOTSUPP; +} +#endif #endif -- cgit v1.3.1