diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-08-06 21:36:58 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-10-05 21:38:07 -0400 |
commit | b70d6bb3f67b2e2964abafb0117f1733f062cba5 (patch) | |
tree | 89a8b90694b85905d6731c1280910e30fb9881ab /drivers | |
parent | fb7ba2114bcd8bb51640c20bc68f89164b29b9ed (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.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600_blit_kms.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 14 |
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 | |||
537 | done: | ||
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) { |