aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-08-06 21:36:58 -0400
committerDave Airlie <airlied@redhat.com>2010-10-05 21:38:07 -0400
commitb70d6bb3f67b2e2964abafb0117f1733f062cba5 (patch)
tree89a8b90694b85905d6731c1280910e30fb9881ab /drivers
parentfb7ba2114bcd8bb51640c20bc68f89164b29b9ed (diff)
drm/radeon/kms: clean up r6xx/r7xx blit init (v2)
Move common code to init function. v2: make sure the bo is pinned after init as well. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/radeon/r600.c14
-rw-r--r--drivers/gpu/drm/radeon/r600_blit_kms.c17
-rw-r--r--drivers/gpu/drm/radeon/rv770.c14
3 files changed, 17 insertions, 28 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 7a04959ba0ee..927509ff349a 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2426,19 +2426,7 @@ int r600_startup(struct radeon_device *rdev)
2426 rdev->asic->copy = NULL; 2426 rdev->asic->copy = NULL;
2427 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); 2427 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
2428 } 2428 }
2429 /* pin copy shader into vram */ 2429
2430 if (rdev->r600_blit.shader_obj) {
2431 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
2432 if (unlikely(r != 0))
2433 return r;
2434 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
2435 &rdev->r600_blit.shader_gpu_addr);
2436 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
2437 if (r) {
2438 dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
2439 return r;
2440 }
2441 }
2442 /* Enable IRQ */ 2430 /* Enable IRQ */
2443 r = r600_irq_init(rdev); 2431 r = r600_irq_init(rdev);
2444 if (r) { 2432 if (r) {
diff --git a/drivers/gpu/drm/radeon/r600_blit_kms.c b/drivers/gpu/drm/radeon/r600_blit_kms.c
index 9ceb2a1ce799..90394df63009 100644
--- a/drivers/gpu/drm/radeon/r600_blit_kms.c
+++ b/drivers/gpu/drm/radeon/r600_blit_kms.c
@@ -472,9 +472,10 @@ int r600_blit_init(struct radeon_device *rdev)
472 u32 packet2s[16]; 472 u32 packet2s[16];
473 int num_packet2s = 0; 473 int num_packet2s = 0;
474 474
475 /* don't reinitialize blit */ 475 /* pin copy shader into vram if already initialized */
476 if (rdev->r600_blit.shader_obj) 476 if (rdev->r600_blit.shader_obj)
477 return 0; 477 goto done;
478
478 mutex_init(&rdev->r600_blit.mutex); 479 mutex_init(&rdev->r600_blit.mutex);
479 rdev->r600_blit.state_offset = 0; 480 rdev->r600_blit.state_offset = 0;
480 481
@@ -532,6 +533,18 @@ int r600_blit_init(struct radeon_device *rdev)
532 memcpy(ptr + rdev->r600_blit.ps_offset, r6xx_ps, r6xx_ps_size * 4); 533 memcpy(ptr + rdev->r600_blit.ps_offset, r6xx_ps, r6xx_ps_size * 4);
533 radeon_bo_kunmap(rdev->r600_blit.shader_obj); 534 radeon_bo_kunmap(rdev->r600_blit.shader_obj);
534 radeon_bo_unreserve(rdev->r600_blit.shader_obj); 535 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
536
537done:
538 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
539 if (unlikely(r != 0))
540 return r;
541 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
542 &rdev->r600_blit.shader_gpu_addr);
543 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
544 if (r) {
545 dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
546 return r;
547 }
535 return 0; 548 return 0;
536} 549}
537 550
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index bfa59db374d2..bc2beb7d35e9 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -1028,19 +1028,7 @@ static int rv770_startup(struct radeon_device *rdev)
1028 rdev->asic->copy = NULL; 1028 rdev->asic->copy = NULL;
1029 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r); 1029 dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
1030 } 1030 }
1031 /* pin copy shader into vram */ 1031
1032 if (rdev->r600_blit.shader_obj) {
1033 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
1034 if (unlikely(r != 0))
1035 return r;
1036 r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
1037 &rdev->r600_blit.shader_gpu_addr);
1038 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
1039 if (r) {
1040 DRM_ERROR("failed to pin blit object %d\n", r);
1041 return r;
1042 }
1043 }
1044 /* Enable IRQ */ 1032 /* Enable IRQ */
1045 r = r600_irq_init(rdev); 1033 r = r600_irq_init(rdev);
1046 if (r) { 1034 if (r) {