Skip to content

Commit

Permalink
drm/amdgpu/swsmu: add smu11 helper to get manual fan speed (v2)
Browse files Browse the repository at this point in the history
Will be used to fetch the fan speeds when manual fan mode is
set.

v2: squash in a Coverity fix from Colin Ian King

Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Alex Deucher committed Aug 31, 2020
1 parent be439ca commit 3e117f5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
3 changes: 3 additions & 0 deletions drivers/gpu/drm/amd/pm/inc/smu_v11_0.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,9 @@ smu_v11_0_set_fan_control_mode(struct smu_context *smu,
int smu_v11_0_set_fan_speed_rpm(struct smu_context *smu,
uint32_t speed);

int smu_v11_0_get_fan_speed_rpm(struct smu_context *smu,
uint32_t *speed);

int smu_v11_0_set_xgmi_pstate(struct smu_context *smu,
uint32_t pstate);

Expand Down
21 changes: 21 additions & 0 deletions drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
Original file line number Diff line number Diff line change
Expand Up @@ -1153,6 +1153,27 @@ int smu_v11_0_set_fan_speed_rpm(struct smu_context *smu,
return ret;
}

int smu_v11_0_get_fan_speed_rpm(struct smu_context *smu,
uint32_t *speed)
{
struct amdgpu_device *adev = smu->adev;
uint32_t tach_period, crystal_clock_freq;
uint64_t tmp64;

tach_period = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_TACH_CTRL),
CG_TACH_CTRL, TARGET_PERIOD);
if (!tach_period)
return -EINVAL;

crystal_clock_freq = amdgpu_asic_get_xclk(adev);

tmp64 = (uint64_t)crystal_clock_freq * 60 * 10000;
do_div(tmp64, (tach_period * 8));
*speed = (uint32_t)tmp64;

return 0;
}

int smu_v11_0_set_xgmi_pstate(struct smu_context *smu,
uint32_t pstate)
{
Expand Down

0 comments on commit 3e117f5

Please sign in to comment.