From 869eebc39d193911da43a6a872a41568dd82890d Mon Sep 17 00:00:00 2001 From: Anson Huang Date: Fri, 18 Jan 2019 10:35:54 +0800 Subject: [PATCH] imx: add i.MX8 SoCs thermal alarm SIP(silicon provider) service support For NXP's i.MX8 SoCs with system controller inside, thermal sensors are maintained by SCFW, Linux needs to call SMC to trap to TF-A for thermal alarm operation etc. by calling SCFW API. This patch adds temperature alarm SIP service support. Signed-off-by: Anson Huang --- plat/imx/common/imx_sip_handler.c | 9 +++++++++ plat/imx/common/imx_sip_svc.c | 2 ++ plat/imx/common/include/imx_sip_svc.h | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/plat/imx/common/imx_sip_handler.c b/plat/imx/common/imx_sip_handler.c index a096a0606..469e29532 100644 --- a/plat/imx/common/imx_sip_handler.c +++ b/plat/imx/common/imx_sip_handler.c @@ -128,3 +128,12 @@ int imx_otp_handler(uint32_t smc_fid, return ret; } + +int imx_misc_set_temp_handler(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4) +{ + return sc_misc_set_temp(ipc_handle, x1, x2, x3, x4); +} diff --git a/plat/imx/common/imx_sip_svc.c b/plat/imx/common/imx_sip_svc.c index e7afb3c6b..d66c24e09 100644 --- a/plat/imx/common/imx_sip_svc.c +++ b/plat/imx/common/imx_sip_svc.c @@ -37,6 +37,8 @@ static uintptr_t imx_sip_handler(unsigned int smc_fid, case IMX_SIP_OTP_READ: case IMX_SIP_OTP_WRITE: return imx_otp_handler(smc_fid, handle, x1, x2); + case IMX_SIP_MISC_SET_TEMP: + SMC_RET1(handle, imx_misc_set_temp_handler(smc_fid, x1, x2, x3, x4)); #endif default: WARN("Unimplemented i.MX SiP Service Call: 0x%x\n", smc_fid); diff --git a/plat/imx/common/include/imx_sip_svc.h b/plat/imx/common/include/imx_sip_svc.h index 3fa6b82c3..c259d23ca 100644 --- a/plat/imx/common/include/imx_sip_svc.h +++ b/plat/imx/common/include/imx_sip_svc.h @@ -21,6 +21,8 @@ #define IMX_SIP_OTP_READ 0xC200000A #define IMX_SIP_OTP_WRITE 0xC200000B +#define IMX_SIP_MISC_SET_TEMP 0xC200000C + #if (defined(PLAT_IMX8QM) || defined(PLAT_IMX8QX)) int imx_cpufreq_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, u_register_t x3); @@ -30,6 +32,9 @@ int imx_wakeup_src_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, u_register_t x3); int imx_otp_handler(uint32_t smc_fid, void *handle, u_register_t x1, u_register_t x2); +int imx_misc_set_temp_handler(uint32_t smc_fid, u_register_t x1, + u_register_t x2, u_register_t x3, + u_register_t x4); #endif #endif /* __IMX_SIP_SVC_H__ */