diff options
| -rw-r--r-- | drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/inc/smu_v11_0.h | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 31 | 
7 files changed, 8 insertions, 39 deletions
| diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h index 0ca997f83fb6..d22a759b6b43 100644 --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_smu.h @@ -573,7 +573,6 @@ struct pptable_funcs {  	int (*conv_power_profile_to_pplib_workload)(int power_profile);  	uint32_t (*get_fan_control_mode)(struct smu_context *smu);  	int (*set_fan_control_mode)(struct smu_context *smu, uint32_t mode); -	int (*set_fan_speed_percent)(struct smu_context *smu, uint32_t speed);  	int (*set_fan_speed_rpm)(struct smu_context *smu, uint32_t speed);  	int (*set_xgmi_pstate)(struct smu_context *smu, uint32_t pstate);  	int (*gfx_off_control)(struct smu_context *smu, bool enable); diff --git a/drivers/gpu/drm/amd/pm/inc/smu_v11_0.h b/drivers/gpu/drm/amd/pm/inc/smu_v11_0.h index 2a3f1ee4a50b..8307e2b790da 100644 --- a/drivers/gpu/drm/amd/pm/inc/smu_v11_0.h +++ b/drivers/gpu/drm/amd/pm/inc/smu_v11_0.h @@ -200,9 +200,6 @@ int  smu_v11_0_set_fan_control_mode(struct smu_context *smu,  			       uint32_t mode); -int -smu_v11_0_set_fan_speed_percent(struct smu_context *smu, uint32_t speed); -  int smu_v11_0_set_fan_speed_rpm(struct smu_context *smu,  				       uint32_t speed); diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c index 53e2051432bf..7a55ece1f124 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c @@ -2217,14 +2217,19 @@ int smu_get_fan_speed_percent(struct smu_context *smu, uint32_t *speed)  int smu_set_fan_speed_percent(struct smu_context *smu, uint32_t speed)  {  	int ret = 0; +	uint32_t rpm;  	if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)  		return -EOPNOTSUPP;  	mutex_lock(&smu->mutex); -	if (smu->ppt_funcs->set_fan_speed_percent) -		ret = smu->ppt_funcs->set_fan_speed_percent(smu, speed); +	if (smu->ppt_funcs->set_fan_speed_rpm) { +		if (speed > 100) +			speed = 100; +		rpm = speed * smu->fan_max_rpm / 100; +		ret = smu->ppt_funcs->set_fan_speed_rpm(smu, rpm); +	}  	mutex_unlock(&smu->mutex); diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c index 1998e7916fef..f6d9b0db3e82 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c @@ -2363,7 +2363,6 @@ static const struct pptable_funcs arcturus_ppt_funcs = {  	.display_clock_voltage_request = smu_v11_0_display_clock_voltage_request,  	.get_fan_control_mode = smu_v11_0_get_fan_control_mode,  	.set_fan_control_mode = smu_v11_0_set_fan_control_mode, -	.set_fan_speed_percent = smu_v11_0_set_fan_speed_percent,  	.set_fan_speed_rpm = smu_v11_0_set_fan_speed_rpm,  	.set_xgmi_pstate = smu_v11_0_set_xgmi_pstate,  	.gfx_off_control = smu_v11_0_gfx_off_control, diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c index d5c25e538a03..87b5f9ff4021 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c @@ -2631,7 +2631,6 @@ static const struct pptable_funcs navi10_ppt_funcs = {  	.display_clock_voltage_request = smu_v11_0_display_clock_voltage_request,  	.get_fan_control_mode = smu_v11_0_get_fan_control_mode,  	.set_fan_control_mode = smu_v11_0_set_fan_control_mode, -	.set_fan_speed_percent = smu_v11_0_set_fan_speed_percent,  	.set_fan_speed_rpm = smu_v11_0_set_fan_speed_rpm,  	.set_xgmi_pstate = smu_v11_0_set_xgmi_pstate,  	.gfx_off_control = smu_v11_0_gfx_off_control, diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c index 97e54d382862..863372436b98 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c @@ -2778,7 +2778,6 @@ static const struct pptable_funcs sienna_cichlid_ppt_funcs = {  	.display_clock_voltage_request = smu_v11_0_display_clock_voltage_request,  	.get_fan_control_mode = smu_v11_0_get_fan_control_mode,  	.set_fan_control_mode = smu_v11_0_set_fan_control_mode, -	.set_fan_speed_percent = smu_v11_0_set_fan_speed_percent,  	.set_fan_speed_rpm = smu_v11_0_set_fan_speed_rpm,  	.set_xgmi_pstate = smu_v11_0_set_xgmi_pstate,  	.gfx_off_control = smu_v11_0_gfx_off_control, diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c index ec20e839f555..5abc06f7c9f3 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c @@ -1100,35 +1100,6 @@ smu_v11_0_set_fan_static_mode(struct smu_context *smu, uint32_t mode)  }  int -smu_v11_0_set_fan_speed_percent(struct smu_context *smu, uint32_t speed) -{ -	struct amdgpu_device *adev = smu->adev; -	uint32_t duty100, duty; -	uint64_t tmp64; - -	if (speed > 100) -		speed = 100; - -	if (smu_v11_0_auto_fan_control(smu, 0)) -		return -EINVAL; - -	duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1), -				CG_FDO_CTRL1, FMAX_DUTY100); -	if (!duty100) -		return -EINVAL; - -	tmp64 = (uint64_t)speed * duty100; -	do_div(tmp64, 100); -	duty = (uint32_t)tmp64; - -	WREG32_SOC15(THM, 0, mmCG_FDO_CTRL0, -		     REG_SET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL0), -				   CG_FDO_CTRL0, FDO_STATIC_DUTY, duty)); - -	return smu_v11_0_set_fan_static_mode(smu, FDO_PWM_MODE_STATIC); -} - -int  smu_v11_0_set_fan_control_mode(struct smu_context *smu,  			       uint32_t mode)  { @@ -1136,7 +1107,7 @@ smu_v11_0_set_fan_control_mode(struct smu_context *smu,  	switch (mode) {  	case AMD_FAN_CTRL_NONE: -		ret = smu_v11_0_set_fan_speed_percent(smu, 100); +		ret = smu_v11_0_set_fan_speed_rpm(smu, smu->fan_max_rpm);  		break;  	case AMD_FAN_CTRL_MANUAL:  		ret = smu_v11_0_auto_fan_control(smu, 0); | 
