RE: [PATCH] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""

2022-11-06 Thread Chen, Guchun
Reviewed-by: Guchun Chen 

Regards,
Guchun

-Original Message-
From: Song, Asher  
Sent: Friday, November 4, 2022 5:30 PM
To: stalk...@gmail.com; Chen, Guchun ; Deucher, Alexander 
; Quan, Evan ; ern...@gmail.com; 
amd-gfx@lists.freedesktop.org
Cc: Song, Asher 
Subject: [PATCH] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm 
for vega10 properly""

This reverts commit 97370f1826eb7ee6880e09ee1eaafe28232cabc6.

The origin patch "drm/amdgpu: getting fan speed pwm for vega10 properly" works 
fine. Test failure is caused by test case self.

Signed-off-by: Asher Song 
---
 .../amd/pm/powerplay/hwmgr/vega10_thermal.c   | 25 +--
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
index dad3e3741a4e..190af79f3236 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr 
*hwmgr,  int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
uint32_t *speed)
 {
-   uint32_t current_rpm;
-   uint32_t percent = 0;
-
-   if (hwmgr->thermal_controller.fanInfo.bNoFan)
-   return 0;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t duty100, duty;
+   uint64_t tmp64;
 
-   if (vega10_get_current_rpm(hwmgr, _rpm))
-   return -1;
+   duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
+   CG_FDO_CTRL1, FMAX_DUTY100);
+   duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
+   CG_THERMAL_STATUS, FDO_PWM_DUTY);
 
-   if (hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM != 0)
-   percent = current_rpm * 255 /
-   hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM;
+   if (!duty100)
+   return -EINVAL;
 
-   *speed = MIN(percent, 255);
+   tmp64 = (uint64_t)duty * 255;
+   do_div(tmp64, duty100);
+   *speed = MIN((uint32_t)tmp64, 255);
 
return 0;
 }
--
2.25.1



Re: [PATCH] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""

2022-11-04 Thread Alex Deucher
On Fri, Nov 4, 2022 at 5:30 AM Asher Song  wrote:
>
> This reverts commit 97370f1826eb7ee6880e09ee1eaafe28232cabc6.
>
> The origin patch "drm/amdgpu: getting fan speed pwm for vega10 properly" 
> works fine. Test failure is caused by test case self.

Instead of reverting the revert, can you just reapply the original
patch and amend the commit message with this statement?
Either way:
Acked-by: Alex Deucher 

Alex

>
> Signed-off-by: Asher Song 
> ---
>  .../amd/pm/powerplay/hwmgr/vega10_thermal.c   | 25 +--
>  1 file changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c 
> b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
> index dad3e3741a4e..190af79f3236 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
> @@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr 
> *hwmgr,
>  int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
> uint32_t *speed)
>  {
> -   uint32_t current_rpm;
> -   uint32_t percent = 0;
> -
> -   if (hwmgr->thermal_controller.fanInfo.bNoFan)
> -   return 0;
> +   struct amdgpu_device *adev = hwmgr->adev;
> +   uint32_t duty100, duty;
> +   uint64_t tmp64;
>
> -   if (vega10_get_current_rpm(hwmgr, _rpm))
> -   return -1;
> +   duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
> +   CG_FDO_CTRL1, FMAX_DUTY100);
> +   duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
> +   CG_THERMAL_STATUS, FDO_PWM_DUTY);
>
> -   if (hwmgr->thermal_controller.
> -   advanceFanControlParameters.usMaxFanRPM != 0)
> -   percent = current_rpm * 255 /
> -   hwmgr->thermal_controller.
> -   advanceFanControlParameters.usMaxFanRPM;
> +   if (!duty100)
> +   return -EINVAL;
>
> -   *speed = MIN(percent, 255);
> +   tmp64 = (uint64_t)duty * 255;
> +   do_div(tmp64, duty100);
> +   *speed = MIN((uint32_t)tmp64, 255);
>
> return 0;
>  }
> --
> 2.25.1
>


[PATCH] Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""

2022-11-04 Thread Asher Song
This reverts commit 97370f1826eb7ee6880e09ee1eaafe28232cabc6.

The origin patch "drm/amdgpu: getting fan speed pwm for vega10 properly" works 
fine. Test failure is caused by test case self.

Signed-off-by: Asher Song 
---
 .../amd/pm/powerplay/hwmgr/vega10_thermal.c   | 25 +--
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
index dad3e3741a4e..190af79f3236 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr 
*hwmgr,
 int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
uint32_t *speed)
 {
-   uint32_t current_rpm;
-   uint32_t percent = 0;
-
-   if (hwmgr->thermal_controller.fanInfo.bNoFan)
-   return 0;
+   struct amdgpu_device *adev = hwmgr->adev;
+   uint32_t duty100, duty;
+   uint64_t tmp64;
 
-   if (vega10_get_current_rpm(hwmgr, _rpm))
-   return -1;
+   duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
+   CG_FDO_CTRL1, FMAX_DUTY100);
+   duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
+   CG_THERMAL_STATUS, FDO_PWM_DUTY);
 
-   if (hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM != 0)
-   percent = current_rpm * 255 /
-   hwmgr->thermal_controller.
-   advanceFanControlParameters.usMaxFanRPM;
+   if (!duty100)
+   return -EINVAL;
 
-   *speed = MIN(percent, 255);
+   tmp64 = (uint64_t)duty * 255;
+   do_div(tmp64, duty100);
+   *speed = MIN((uint32_t)tmp64, 255);
 
return 0;
 }
-- 
2.25.1