[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