aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/amdgpu/ci_dpm.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
index a6dda3470003..6dc1410b380f 100644
--- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
@@ -1267,30 +1267,33 @@ static int ci_dpm_set_fan_speed_percent(struct amdgpu_device *adev,
1267 1267
1268static void ci_dpm_set_fan_control_mode(struct amdgpu_device *adev, u32 mode) 1268static void ci_dpm_set_fan_control_mode(struct amdgpu_device *adev, u32 mode)
1269{ 1269{
1270 if (mode) { 1270 switch (mode) {
1271 /* stop auto-manage */ 1271 case AMD_FAN_CTRL_NONE:
1272 if (adev->pm.dpm.fan.ucode_fan_control) 1272 if (adev->pm.dpm.fan.ucode_fan_control)
1273 ci_fan_ctrl_stop_smc_fan_control(adev); 1273 ci_fan_ctrl_stop_smc_fan_control(adev);
1274 ci_fan_ctrl_set_static_mode(adev, mode); 1274 ci_dpm_set_fan_speed_percent(adev, 100);
1275 } else { 1275 break;
1276 /* restart auto-manage */ 1276 case AMD_FAN_CTRL_MANUAL:
1277 if (adev->pm.dpm.fan.ucode_fan_control)
1278 ci_fan_ctrl_stop_smc_fan_control(adev);
1279 break;
1280 case AMD_FAN_CTRL_AUTO:
1277 if (adev->pm.dpm.fan.ucode_fan_control) 1281 if (adev->pm.dpm.fan.ucode_fan_control)
1278 ci_thermal_start_smc_fan_control(adev); 1282 ci_thermal_start_smc_fan_control(adev);
1279 else 1283 break;
1280 ci_fan_ctrl_set_default_mode(adev); 1284 default:
1285 break;
1281 } 1286 }
1282} 1287}
1283 1288
1284static u32 ci_dpm_get_fan_control_mode(struct amdgpu_device *adev) 1289static u32 ci_dpm_get_fan_control_mode(struct amdgpu_device *adev)
1285{ 1290{
1286 struct ci_power_info *pi = ci_get_pi(adev); 1291 struct ci_power_info *pi = ci_get_pi(adev);
1287 u32 tmp;
1288 1292
1289 if (pi->fan_is_controlled_by_smc) 1293 if (pi->fan_is_controlled_by_smc)
1290 return 0; 1294 return AMD_FAN_CTRL_AUTO;
1291 1295 else
1292 tmp = RREG32_SMC(ixCG_FDO_CTRL2) & CG_FDO_CTRL2__FDO_PWM_MODE_MASK; 1296 return AMD_FAN_CTRL_MANUAL;
1293 return (tmp >> CG_FDO_CTRL2__FDO_PWM_MODE__SHIFT);
1294} 1297}
1295 1298
1296#if 0 1299#if 0