diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2015-10-15 10:59:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-01-15 12:43:22 -0500 |
commit | 7776a69386179ea477f501aa222692b9856ec56c (patch) | |
tree | 4bf953a1499daa4a8655a194df679848abd8efdf /drivers/gpu/drm/amd/amdgpu | |
parent | e160e4db833c7e8587ec3c88efaed0d84f1bcf42 (diff) |
drm/amdgpu: Add some tweaks to gfx 8 soft reset
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Ken Wang <Qingqing.Wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 13235d84e5a6..95c0cdfbd1b3 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
@@ -4186,7 +4186,18 @@ static int gfx_v8_0_soft_reset(void *handle) | |||
4186 | gfx_v8_0_cp_gfx_enable(adev, false); | 4186 | gfx_v8_0_cp_gfx_enable(adev, false); |
4187 | 4187 | ||
4188 | /* Disable MEC parsing/prefetching */ | 4188 | /* Disable MEC parsing/prefetching */ |
4189 | /* XXX todo */ | 4189 | gfx_v8_0_cp_compute_enable(adev, false); |
4190 | |||
4191 | if (grbm_soft_reset || srbm_soft_reset) { | ||
4192 | tmp = RREG32(mmGMCON_DEBUG); | ||
4193 | tmp = REG_SET_FIELD(tmp, | ||
4194 | GMCON_DEBUG, GFX_STALL, 1); | ||
4195 | tmp = REG_SET_FIELD(tmp, | ||
4196 | GMCON_DEBUG, GFX_CLEAR, 1); | ||
4197 | WREG32(mmGMCON_DEBUG, tmp); | ||
4198 | |||
4199 | udelay(50); | ||
4200 | } | ||
4190 | 4201 | ||
4191 | if (grbm_soft_reset) { | 4202 | if (grbm_soft_reset) { |
4192 | tmp = RREG32(mmGRBM_SOFT_RESET); | 4203 | tmp = RREG32(mmGRBM_SOFT_RESET); |
@@ -4215,6 +4226,16 @@ static int gfx_v8_0_soft_reset(void *handle) | |||
4215 | WREG32(mmSRBM_SOFT_RESET, tmp); | 4226 | WREG32(mmSRBM_SOFT_RESET, tmp); |
4216 | tmp = RREG32(mmSRBM_SOFT_RESET); | 4227 | tmp = RREG32(mmSRBM_SOFT_RESET); |
4217 | } | 4228 | } |
4229 | |||
4230 | if (grbm_soft_reset || srbm_soft_reset) { | ||
4231 | tmp = RREG32(mmGMCON_DEBUG); | ||
4232 | tmp = REG_SET_FIELD(tmp, | ||
4233 | GMCON_DEBUG, GFX_STALL, 0); | ||
4234 | tmp = REG_SET_FIELD(tmp, | ||
4235 | GMCON_DEBUG, GFX_CLEAR, 0); | ||
4236 | WREG32(mmGMCON_DEBUG, tmp); | ||
4237 | } | ||
4238 | |||
4218 | /* Wait a little for things to settle down */ | 4239 | /* Wait a little for things to settle down */ |
4219 | udelay(50); | 4240 | udelay(50); |
4220 | gfx_v8_0_print_status((void *)adev); | 4241 | gfx_v8_0_print_status((void *)adev); |