diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2011-10-14 10:51:22 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-10-18 05:12:51 -0400 |
commit | 6ddddfe7341a6fa2db22d63084bfb1df9cce0724 (patch) | |
tree | a21b66710dbcce73a4471d8fd0e5b033c1256ce3 /drivers/gpu/drm/radeon/r600.c | |
parent | fb3d9e97e1ad5f2c19b68fe5a0c6a95bf57c65c3 (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.c | 26 |
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 | ||
2379 | void 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 | |||
2379 | int r600_set_surface_reg(struct radeon_device *rdev, int reg, | 2393 | int 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 | ||
2496 | int r600_suspend(struct radeon_device *rdev) | 2510 | int 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 | ||