[PATCH] drm/amd/pm: disallow the fan setting if there is no fan on smu13

Feng, Kenneth Kenneth.Feng at amd.com
Tue Aug 8 10:26:17 UTC 2023


[AMD Official Use Only - General]

Currently no_fan is determined in sw init.
    if (!smu->ppt_funcs->get_fan_control_mode)
        smu->adev->pm.no_fan = true;

This is the case that some boards have fans and some don't have.
smu->ppt_funcs->get_fan_control_mode still need to be defined.
!smu_cmn_feature_is_supported(smu, SMU_FEATURE_FAN_CONTROL_BIT) is enough to get the fan capability.
Not sure if it's better to depend on pm.no_fan.
Thanks.



-----Original Message-----
From: Lazar, Lijo <Lijo.Lazar at amd.com>
Sent: Tuesday, August 8, 2023 6:12 PM
To: Feng, Kenneth <Kenneth.Feng at amd.com>; amd-gfx at lists.freedesktop.org
Cc: Arif, Maisam <Maisam.Arif at amd.com>
Subject: Re: [PATCH] drm/amd/pm: disallow the fan setting if there is no fan on smu13



On 8/8/2023 1:21 PM, Kenneth Feng wrote:
> disallow the fan setting if there is no fan on smu13
>
> Signed-off-by: Kenneth Feng <kenneth.feng at amd.com>
> ---
>   drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 9 ++++++---
>   1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> index 9b62b45ebb7f..09ef0a7e7679 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> @@ -1131,7 +1131,9 @@ smu_v13_0_display_clock_voltage_request(struct smu_context *smu,
>
>   uint32_t smu_v13_0_get_fan_control_mode(struct smu_context *smu)
>   {
> -     if (!smu_cmn_feature_is_enabled(smu, SMU_FEATURE_FAN_CONTROL_BIT))
> +     if (!smu_cmn_feature_is_supported(smu, SMU_FEATURE_FAN_CONTROL_BIT))
> +             return AMD_FAN_CTRL_NONE;

If there is no PMFW fan control, isn't it better to set pm.no_fan?

Thanks,
Lijo

> +     else if (!smu_cmn_feature_is_enabled(smu, SMU_FEATURE_FAN_CONTROL_BIT))
>               return AMD_FAN_CTRL_MANUAL;
>       else
>               return AMD_FAN_CTRL_AUTO;
> @@ -1143,7 +1145,7 @@ smu_v13_0_auto_fan_control(struct smu_context *smu, bool auto_fan_control)
>       int ret = 0;
>
>       if (!smu_cmn_feature_is_supported(smu, SMU_FEATURE_FAN_CONTROL_BIT))
> -             return 0;
> +             return -EINVAL;
>
>       ret = smu_cmn_feature_set_enabled(smu, SMU_FEATURE_FAN_CONTROL_BIT, auto_fan_control);
>       if (ret)
> @@ -1204,7 +1206,8 @@ smu_v13_0_set_fan_control_mode(struct smu_context *smu,
>
>       switch (mode) {
>       case AMD_FAN_CTRL_NONE:
> -             ret = smu_v13_0_set_fan_speed_pwm(smu, 255);
> +             if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_FAN_CONTROL_BIT))
> +                     ret = -EINVAL;
>               break;
>       case AMD_FAN_CTRL_MANUAL:
>               ret = smu_v13_0_auto_fan_control(smu, 0);


More information about the amd-gfx mailing list