drm/amd/pm: a quick fix for "divided by zero" error
Considering Arcturus is a dedicated ASIC for computing, it will be more proper to drop the support for fan speed reading and setting. That's on the TODO list. Signed-off-by: Evan Quan <evan.quan@amd.com> Reported-by: Rui Teng <rui.teng@amd.com> Reviewed-by: Guchun Chen <guchun.chen@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
36a7aee027
commit
8ac1696b1d
|
@ -1227,8 +1227,12 @@ static int arcturus_get_fan_speed_rpm(struct smu_context *smu,
|
|||
|
||||
tmp64 = (uint64_t)crystal_clock_freq * 60 * 10000;
|
||||
tach_status = RREG32_SOC15(THM, 0, mmCG_TACH_STATUS_ARCT);
|
||||
do_div(tmp64, tach_status);
|
||||
*speed = (uint32_t)tmp64;
|
||||
if (tach_status) {
|
||||
do_div(tmp64, tach_status);
|
||||
*speed = (uint32_t)tmp64;
|
||||
} else {
|
||||
*speed = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -1303,12 +1307,14 @@ static int arcturus_get_fan_speed_pwm(struct smu_context *smu,
|
|||
CG_FDO_CTRL1, FMAX_DUTY100);
|
||||
duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS_ARCT),
|
||||
CG_THERMAL_STATUS, FDO_PWM_DUTY);
|
||||
if (!duty100)
|
||||
return -EINVAL;
|
||||
|
||||
tmp64 = (uint64_t)duty * 255;
|
||||
do_div(tmp64, duty100);
|
||||
*speed = MIN((uint32_t)tmp64, 255);
|
||||
if (duty100) {
|
||||
tmp64 = (uint64_t)duty * 255;
|
||||
do_div(tmp64, duty100);
|
||||
*speed = MIN((uint32_t)tmp64, 255);
|
||||
} else {
|
||||
*speed = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1306,8 +1306,13 @@ int smu_v11_0_get_fan_speed_rpm(struct smu_context *smu,
|
|||
tmp64 = (uint64_t)crystal_clock_freq * 60 * 10000;
|
||||
|
||||
tach_status = RREG32_SOC15(THM, 0, mmCG_TACH_STATUS);
|
||||
do_div(tmp64, tach_status);
|
||||
*speed = (uint32_t)tmp64;
|
||||
if (tach_status) {
|
||||
do_div(tmp64, tach_status);
|
||||
*speed = (uint32_t)tmp64;
|
||||
} else {
|
||||
dev_warn_once(adev->dev, "Got zero output on CG_TACH_STATUS reading!\n");
|
||||
*speed = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue