aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r600.c
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2011-10-14 10:51:22 -0400
committerDave Airlie <airlied@redhat.com>2011-10-18 05:12:51 -0400
commit6ddddfe7341a6fa2db22d63084bfb1df9cce0724 (patch)
treea21b66710dbcce73a4471d8fd0e5b033c1256ce3 /drivers/gpu/drm/radeon/r600.c
parentfb3d9e97e1ad5f2c19b68fe5a0c6a95bf57c65c3 (diff)
drm/radeon/kms: make r600-NI blit suspend code common
r600-NI shared the same blit suspend code. Clean it up and make it a shared function. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Ilija Hadzic <ihadzic@research.bell-labs.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600.c')
-rw-r--r--drivers/gpu/drm/radeon/r600.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index e106f30787fd..e87f5662a104 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2376,6 +2376,20 @@ int r600_copy_blit(struct radeon_device *rdev,
2376 return 0; 2376 return 0;
2377} 2377}
2378 2378
2379void r600_blit_suspend(struct radeon_device *rdev)
2380{
2381 int r;
2382
2383 /* unpin shaders bo */
2384 if (rdev->r600_blit.shader_obj) {
2385 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
2386 if (!r) {
2387 radeon_bo_unpin(rdev->r600_blit.shader_obj);
2388 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
2389 }
2390 }
2391}
2392
2379int r600_set_surface_reg(struct radeon_device *rdev, int reg, 2393int r600_set_surface_reg(struct radeon_device *rdev, int reg,
2380 uint32_t tiling_flags, uint32_t pitch, 2394 uint32_t tiling_flags, uint32_t pitch,
2381 uint32_t offset, uint32_t obj_size) 2395 uint32_t offset, uint32_t obj_size)
@@ -2495,8 +2509,6 @@ int r600_resume(struct radeon_device *rdev)
2495 2509
2496int r600_suspend(struct radeon_device *rdev) 2510int r600_suspend(struct radeon_device *rdev)
2497{ 2511{
2498 int r;
2499
2500 r600_audio_fini(rdev); 2512 r600_audio_fini(rdev);
2501 /* FIXME: we should wait for ring to be empty */ 2513 /* FIXME: we should wait for ring to be empty */
2502 r600_cp_stop(rdev); 2514 r600_cp_stop(rdev);
@@ -2504,14 +2516,8 @@ int r600_suspend(struct radeon_device *rdev)
2504 r600_irq_suspend(rdev); 2516 r600_irq_suspend(rdev);
2505 radeon_wb_disable(rdev); 2517 radeon_wb_disable(rdev);
2506 r600_pcie_gart_disable(rdev); 2518 r600_pcie_gart_disable(rdev);
2507 /* unpin shaders bo */ 2519 r600_blit_suspend(rdev);
2508 if (rdev->r600_blit.shader_obj) { 2520
2509 r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
2510 if (!r) {
2511 radeon_bo_unpin(rdev->r600_blit.shader_obj);
2512 radeon_bo_unreserve(rdev->r600_blit.shader_obj);
2513 }
2514 }
2515 return 0; 2521 return 0;
2516} 2522}
2517 2523