drm/radeon/kms: rv770 blit init called too late.
authorDave Airlie <airlied@linux.ie>
Fri, 18 Sep 2009 08:33:07 +0000 (18:33 +1000)
committerDave Airlie <airlied@linux.ie>
Fri, 18 Sep 2009 08:34:53 +0000 (18:34 +1000)
re-align with r600 code, to init blit earlier.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/rv770.c

index a6399662a8432c88a0e8186c068c69b234c6f307..576ae2f6c71700624358ea1da1796fae037c8abb 100644 (file)
@@ -860,6 +860,14 @@ static int rv770_startup(struct radeon_device *rdev)
        if (r)
                return r;
        rv770_gpu_init(rdev);
+
+       r = radeon_object_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
+                             &rdev->r600_blit.shader_gpu_addr);
+       if (r) {
+               DRM_ERROR("failed to pin blit object %d\n", r);
+               return r;
+       }
+
        r = radeon_ring_init(rdev, rdev->cp.ring_size);
        if (r)
                return r;
@@ -993,6 +1001,12 @@ int rv770_init(struct radeon_device *rdev)
                return r;
 
        rdev->accel_working = true;
+       r = r600_blit_init(rdev);
+       if (r) {
+               DRM_ERROR("radeon: failled blitter (%d).\n", r);
+               rdev->accel_working = false;
+       }
+
        r = rv770_startup(rdev);
        if (r) {
                if (rdev->flags & RADEON_IS_AGP) {
@@ -1004,11 +1018,6 @@ int rv770_init(struct radeon_device *rdev)
                rdev->accel_working = false;
        }
        if (rdev->accel_working) {
-               r = r600_blit_init(rdev);
-               if (r) {
-                       DRM_ERROR("radeon: failled blitter (%d).\n", r);
-                       rdev->accel_working = false;
-               }
                r = radeon_ib_pool_init(rdev);
                if (r) {
                        DRM_ERROR("radeon: failled initializing IB pool (%d).\n", r);