[PATCH v4 3/8] firmware: meson: sm: Add thermal calibration SMC call
Neil Armstrong
neil.armstrong at linaro.org
Fri Apr 24 02:47:49 PDT 2026
On 4/23/26 18:07, Ronald Claveau via B4 Relay wrote:
> From: Ronald Claveau <linux-kernel-dev at aliel.fr>
>
> Add SM_THERMAL_CALIB_READ at SMC ID 0x82000047 in the command
> table and implement meson_sm_get_thermal_calib(), which forwards the
> tsensor_id argument to the secure monitor and returns the calibration data.
>
> Also realign the CMD() column to improve readability.
>
> Signed-off-by: Ronald Claveau <linux-kernel-dev at aliel.fr>
> ---
> drivers/firmware/meson/meson_sm.c | 29 ++++++++++++++++++++++++-----
> 1 file changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c
> index 3ab67aaa9e5da..4e57986724212 100644
> --- a/drivers/firmware/meson/meson_sm.c
> +++ b/drivers/firmware/meson/meson_sm.c
> @@ -41,12 +41,13 @@ static const struct meson_sm_chip gxbb_chip = {
> .cmd_shmem_in_base = 0x82000020,
> .cmd_shmem_out_base = 0x82000021,
> .cmd = {
> - CMD(SM_EFUSE_READ, 0x82000030),
> - CMD(SM_EFUSE_WRITE, 0x82000031),
> + CMD(SM_EFUSE_READ, 0x82000030),
> + CMD(SM_EFUSE_WRITE, 0x82000031),
> CMD(SM_EFUSE_USER_MAX, 0x82000033),
> - CMD(SM_GET_CHIP_ID, 0x82000044),
> - CMD(SM_A1_PWRC_SET, 0x82000093),
> - CMD(SM_A1_PWRC_GET, 0x82000095),
> + CMD(SM_GET_CHIP_ID, 0x82000044),
> + CMD(SM_THERMAL_CALIB_READ, 0x82000047),
> + CMD(SM_A1_PWRC_SET, 0x82000093),
> + CMD(SM_A1_PWRC_GET, 0x82000095),
> { /* sentinel */ },
> },
> };
> @@ -245,6 +246,24 @@ struct meson_sm_firmware *meson_sm_get(struct device_node *sm_node)
> }
> EXPORT_SYMBOL_GPL(meson_sm_get);
>
> +/**
> + *
> + * meson_sm_get_thermal_calib - Read thermal sensor calibration data.
> + * @fw: Pointer to secure-monitor firmware.
> + * @trim_info: Pointer to store the returned calibration data.
> + * @tsensor_id: Sensor index to identify which sensor's calibration data
> + * to retrieve
> + *
> + * Return: 0 on success, negative error code on failure.
> + */
> +int meson_sm_get_thermal_calib(struct meson_sm_firmware *fw, u32 *trim_info,
> + u32 tsensor_id)
> +{
> + return meson_sm_call(fw, SM_THERMAL_CALIB_READ, trim_info, tsensor_id,
> + 0, 0, 0, 0);
> +}
> +EXPORT_SYMBOL_GPL(meson_sm_get_thermal_calib);
> +
> #define SM_CHIP_ID_LENGTH 119
> #define SM_CHIP_ID_OFFSET 4
> #define SM_CHIP_ID_SIZE 12
>
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
Thanks,
Neil
More information about the linux-amlogic
mailing list