diff options
author | James Zhu <James.Zhu@amd.com> | 2018-10-03 17:36:58 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-10-12 13:54:17 -0400 |
commit | 15296db70619984157e60666da5da8994a66870e (patch) | |
tree | d7f177da7c04e6a7d8ae349dfe76cf7734383d9f /drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |
parent | 5866fb929c90e3189c1abd4d6518712ad56c90b4 (diff) |
drm/amdgpu/vcn:Add ring W/R PTR check for VCN DPG mode stop
Add ring write/read pointer check for VCN dynamic power gate mode
stop,to make sure that no job is left in ring before turn off DPG mode.
Signed-off-by: James Zhu <James.Zhu@amd.com>
Acked-by: Leo Liu <leo.liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index 029ed6d16f57..a6094868008c 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
@@ -1171,6 +1171,16 @@ static int vcn_v1_0_stop_dpg_mode(struct amdgpu_device *adev) | |||
1171 | UVD_POWER_STATUS__UVD_POWER_STATUS_TILES_OFF, | 1171 | UVD_POWER_STATUS__UVD_POWER_STATUS_TILES_OFF, |
1172 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); | 1172 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); |
1173 | 1173 | ||
1174 | if (ret_code) { | ||
1175 | int tmp = RREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR) & 0x7FFFFFFF; | ||
1176 | /* wait for read ptr to be equal to write ptr */ | ||
1177 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_RBC_RB_RPTR, tmp, 0xFFFFFFFF, ret_code); | ||
1178 | |||
1179 | SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, | ||
1180 | UVD_POWER_STATUS__UVD_POWER_STATUS_TILES_OFF, | ||
1181 | UVD_POWER_STATUS__UVD_POWER_STATUS_MASK, ret_code); | ||
1182 | } | ||
1183 | |||
1174 | /* disable dynamic power gating mode */ | 1184 | /* disable dynamic power gating mode */ |
1175 | WREG32_P(SOC15_REG_OFFSET(UVD, 0, mmUVD_POWER_STATUS), 0, | 1185 | WREG32_P(SOC15_REG_OFFSET(UVD, 0, mmUVD_POWER_STATUS), 0, |
1176 | ~UVD_POWER_STATUS__UVD_PG_MODE_MASK); | 1186 | ~UVD_POWER_STATUS__UVD_PG_MODE_MASK); |