diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/cik_sdma.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c index f86eb54e7763..d16f2eebd95e 100644 --- a/drivers/gpu/drm/radeon/cik_sdma.c +++ b/drivers/gpu/drm/radeon/cik_sdma.c @@ -268,6 +268,17 @@ static void cik_sdma_gfx_stop(struct radeon_device *rdev)  	}  	rdev->ring[R600_RING_TYPE_DMA_INDEX].ready = false;  	rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX].ready = false; + +	/* FIXME use something else than big hammer but after few days can not +	 * seem to find good combination so reset SDMA blocks as it seems we +	 * do not shut them down properly. This fix hibernation and does not +	 * affect suspend to ram. +	 */ +	WREG32(SRBM_SOFT_RESET, SOFT_RESET_SDMA | SOFT_RESET_SDMA1); +	(void)RREG32(SRBM_SOFT_RESET); +	udelay(50); +	WREG32(SRBM_SOFT_RESET, 0); +	(void)RREG32(SRBM_SOFT_RESET);  }  /** | 
