Commit 2ce529da authored by Alex Deucher's avatar Alex Deucher

drm/radeon: split out radeon_uvd_resume from uvd_v4_2_resume

For powergating, we just need to re-init the registers, there
is no need to restore the uvd BOs.  This just adds needless
work when powergating uvd for playback while the system is
on.  We only need to restore the uvd BOs on an actual resume
from suspend or when the driver loads.

This fixes multi-stream UVD playback on KB systems.
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
parent 27c505ca
...@@ -7051,12 +7051,15 @@ static int cik_startup(struct radeon_device *rdev) ...@@ -7051,12 +7051,15 @@ static int cik_startup(struct radeon_device *rdev)
return r; return r;
} }
r = uvd_v4_2_resume(rdev); r = radeon_uvd_resume(rdev);
if (!r) { if (!r) {
r = radeon_fence_driver_start_ring(rdev, r = uvd_v4_2_resume(rdev);
R600_RING_TYPE_UVD_INDEX); if (!r) {
if (r) r = radeon_fence_driver_start_ring(rdev,
dev_err(rdev->dev, "UVD fences init error (%d).\n", r); R600_RING_TYPE_UVD_INDEX);
if (r)
dev_err(rdev->dev, "UVD fences init error (%d).\n", r);
}
} }
if (r) if (r)
rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_size = 0; rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_size = 0;
......
...@@ -39,11 +39,6 @@ int uvd_v4_2_resume(struct radeon_device *rdev) ...@@ -39,11 +39,6 @@ int uvd_v4_2_resume(struct radeon_device *rdev)
{ {
uint64_t addr; uint64_t addr;
uint32_t size; uint32_t size;
int r;
r = radeon_uvd_resume(rdev);
if (r)
return r;
/* programm the VCPU memory controller bits 0-27 */ /* programm the VCPU memory controller bits 0-27 */
addr = rdev->uvd.gpu_addr >> 3; addr = rdev->uvd.gpu_addr >> 3;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment