Am 29.08.2013 23:24, schrieb Alex Deucher:
> For powergating, we just need to re-init the registers, there
> is no need to resture 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.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

We probably should mention somewhere that this patchset fixes multiple 
stream playback on Kabini, apart from that the patches are:

Reviewed-by: Christian K?nig <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/radeon/cik.c      | 13 ++++++++-----
>   drivers/gpu/drm/radeon/uvd_v4_2.c |  5 -----
>   2 files changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
> index e336a31..79124f8 100644
> --- a/drivers/gpu/drm/radeon/cik.c
> +++ b/drivers/gpu/drm/radeon/cik.c
> @@ -7051,12 +7051,15 @@ static int cik_startup(struct radeon_device *rdev)
>               return r;
>       }
>   
> -     r = uvd_v4_2_resume(rdev);
> +     r = radeon_uvd_resume(rdev);
>       if (!r) {
> -             r = radeon_fence_driver_start_ring(rdev,
> -                                                R600_RING_TYPE_UVD_INDEX);
> -             if (r)
> -                     dev_err(rdev->dev, "UVD fences init error (%d).\n", r);
> +             r = uvd_v4_2_resume(rdev);
> +             if (!r) {
> +                     r = radeon_fence_driver_start_ring(rdev,
> +                                                        
> R600_RING_TYPE_UVD_INDEX);
> +                     if (r)
> +                             dev_err(rdev->dev, "UVD fences init error 
> (%d).\n", r);
> +             }
>       }
>       if (r)
>               rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_size = 0;
> diff --git a/drivers/gpu/drm/radeon/uvd_v4_2.c 
> b/drivers/gpu/drm/radeon/uvd_v4_2.c
> index d7e4807..d04d507 100644
> --- a/drivers/gpu/drm/radeon/uvd_v4_2.c
> +++ b/drivers/gpu/drm/radeon/uvd_v4_2.c
> @@ -39,11 +39,6 @@ int uvd_v4_2_resume(struct radeon_device *rdev)
>   {
>       uint64_t addr;
>       uint32_t size;
> -     int r;
> -
> -     r = radeon_uvd_resume(rdev);
> -     if (r)
> -             return r;
>   
>       /* programm the VCPU memory controller bits 0-27 */
>       addr = rdev->uvd.gpu_addr >> 3;

Reply via email to