[PATCH] arm: socfpga: smc: Add function to get usercode
Tan, Ley Foon
ley.foon.tan at intel.com
Thu Mar 25 07:48:21 CET 2021
> -----Original Message-----
> From: Lim, Elly Siew Chin <elly.siew.chin.lim at intel.com>
> Sent: Thursday, March 25, 2021 2:08 PM
> To: u-boot at lists.denx.de
> Cc: Marek Vasut <marex at denx.de>; Tan, Ley Foon
> <ley.foon.tan at intel.com>; See, Chin Liang <chin.liang.see at intel.com>;
> Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>; Chee, Tien Fong
> <tien.fong.chee at intel.com>; Westergreen, Dalon
> <dalon.westergreen at intel.com>; Simon Glass <sjg at chromium.org>; Gan,
> Yau Wai <yau.wai.gan at intel.com>; Lim, Elly Siew Chin
> <elly.siew.chin.lim at intel.com>
> Subject: [PATCH] arm: socfpga: smc: Add function to get usercode
>
> Add function to send mailbox command via SMC to get usercode from SDM.
>
> Signed-off-by: Siew Chin Lim <elly.siew.chin.lim at intel.com>
> ---
> arch/arm/mach-socfpga/include/mach/smc_api.h | 1 +
> arch/arm/mach-socfpga/smc_api.c | 17 +++++++++++++++++
> include/linux/intel-smc.h | 18 ++++++++++++++++++
> 3 files changed, 36 insertions(+)
>
> diff --git a/arch/arm/mach-socfpga/include/mach/smc_api.h
> b/arch/arm/mach-socfpga/include/mach/smc_api.h
> index bbefdd8dd9..6b5b7eadc6 100644
> --- a/arch/arm/mach-socfpga/include/mach/smc_api.h
> +++ b/arch/arm/mach-socfpga/include/mach/smc_api.h
> @@ -9,5 +9,6 @@
> int invoke_smc(u32 func_id, u64 *args, int arg_len, u64 *ret_arg, int ret_len);
> int smc_send_mailbox(u32 cmd, u32 len, u32 *arg, u8 urgent, u32
> *resp_buf_len,
> u32 *resp_buf);
> +int smc_get_usercode(u32 *usercode);
>
> #endif /* _SMC_API_H_ */
> diff --git a/arch/arm/mach-socfpga/smc_api.c b/arch/arm/mach-
> socfpga/smc_api.c index 085daba162..8ffc7a472b 100644
> --- a/arch/arm/mach-socfpga/smc_api.c
> +++ b/arch/arm/mach-socfpga/smc_api.c
> @@ -54,3 +54,20 @@ int smc_send_mailbox(u32 cmd, u32 len, u32 *arg, u8
> urgent, u32 *resp_buf_len,
>
> return (int)resp[0];
> }
> +
> +int smc_get_usercode(u32 *usercode)
> +{
> + int ret;
> + u64 resp;
> +
> + if (!usercode)
> + return -EINVAL;
> +
> + ret = invoke_smc(INTEL_SIP_SMC_GET_USERCODE, NULL, 0,
> + &resp, 1);
> +
> + if (ret == INTEL_SIP_SMC_STATUS_OK)
> + *usercode = (u32)resp;
> +
> + return ret;
> +}
> diff --git a/include/linux/intel-smc.h b/include/linux/intel-smc.h index
> 68d62be417..a54eff43ad 100644
> --- a/include/linux/intel-smc.h
> +++ b/include/linux/intel-smc.h
> @@ -518,4 +518,22 @@
> INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_
> COMPLETED_WRITE)
> #define INTEL_SIP_SMC_MBOX_SEND_CMD \
>
> INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_MBOX_
> SEND_CMD)
>
> +/*
> + * Request INTEL_SIP_SMC_GET_USERCODE
> + *
> + * Send mailbox command to get usercode from SDM
> + *
> + * Call register usage:
> + * a0 INTEL_SIP_SMC_GET_USERCODE
> + * a1-7 not used.
> + *
> + * Return status
> + * a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR
> + * a1 User code
> + * a2-3 not used.
> + */
> +#define INTEL_SIP_SMC_FUNCID_GET_USERCODE 61
> +#define INTEL_SIP_SMC_GET_USERCODE \
> +
> INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_GET_US
> ERCODE)
> +
> #endif
> --
> 2.13.0
Reviewed-by: Ley Foon Tan <ley.foon.tan at intel.com>
More information about the U-Boot
mailing list