diff options
| author | Rex Zhu <Rex.Zhu@amd.com> | 2017-01-10 15:47:50 +0800 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2017-01-12 17:40:37 -0500 | 
| commit | ab8db87b8256e13a62f10af1d32f5fc233c398cc (patch) | |
| tree | 381ea4ae64a56b9725938f76de4c8169d13d7ee1 | |
| parent | a844764751275e0e5d381958e3c7e6e0fe739e25 (diff) | |
drm/amd/powerplay: refine vce dpm update code on Cz.
Program HardMin based on the vce_arbiter.ecclk
if ecclk is 0, disable ECLK DPM 0. Otherwise VCE
could hang if switching SCLK from DPM 0 to 6/7
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
| -rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 24 | 
1 files changed, 16 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c index 4b14f259a147..0fb4e8c8f5e1 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c @@ -1402,14 +1402,22 @@ int  cz_dpm_update_vce_dpm(struct pp_hwmgr *hwmgr)  					     cz_hwmgr->vce_dpm.hard_min_clk,  						PPSMC_MSG_SetEclkHardMin));  	} else { -		/*EPR# 419220 -HW limitation to to */ -		cz_hwmgr->vce_dpm.hard_min_clk = hwmgr->vce_arbiter.ecclk; -		smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, -					    PPSMC_MSG_SetEclkHardMin, -					    cz_get_eclk_level(hwmgr, -				     cz_hwmgr->vce_dpm.hard_min_clk, -					  PPSMC_MSG_SetEclkHardMin)); - +		/*Program HardMin based on the vce_arbiter.ecclk */ +		if (hwmgr->vce_arbiter.ecclk == 0) { +			smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, +					    PPSMC_MSG_SetEclkHardMin, 0); +		/* disable ECLK DPM 0. Otherwise VCE could hang if +		 * switching SCLK from DPM 0 to 6/7 */ +			smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, +					PPSMC_MSG_SetEclkSoftMin, 1); +		} else { +			cz_hwmgr->vce_dpm.hard_min_clk = hwmgr->vce_arbiter.ecclk; +			smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, +						PPSMC_MSG_SetEclkHardMin, +						cz_get_eclk_level(hwmgr, +						cz_hwmgr->vce_dpm.hard_min_clk, +						PPSMC_MSG_SetEclkHardMin)); +		}  	}  	return 0;  } | 
