aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/rv770.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2009-10-01 12:02:12 -0400
committerDave Airlie <airlied@redhat.com>2009-10-01 19:33:52 -0400
commit81cc35bfc19ebe4b823396fe4fef67a923360916 (patch)
treeda9cbddd170b1c93067f9c8e6411cbe02860f3e2 /drivers/gpu/drm/radeon/rv770.c
parent62a8ea3f7bb61e5f92db0a648b7cc566852c36ec (diff)
drm/radeon/kms: Fix R600 write back buffer
This split write back buffer handling into 3 functions, wb_fini for cleanup, wb_enable/wb_disable for enabling/disabling write back used for suspend/resume. This should fix potential issue of letting the write back active before suspending. We need to allocate memory in wb_enable because we can only allocate once GART is running. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/rv770.c')
-rw-r--r--drivers/gpu/drm/radeon/rv770.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 867d04bc4d39..af20a8d48dca 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -884,9 +884,8 @@ static int rv770_startup(struct radeon_device *rdev)
884 r = r600_cp_resume(rdev); 884 r = r600_cp_resume(rdev);
885 if (r) 885 if (r)
886 return r; 886 return r;
887 r = r600_wb_init(rdev); 887 /* write back buffer are not vital so don't worry about failure */
888 if (r) 888 r600_wb_enable(rdev);
889 return r;
890 return 0; 889 return 0;
891} 890}
892 891
@@ -929,8 +928,8 @@ int rv770_suspend(struct radeon_device *rdev)
929 /* FIXME: we should wait for ring to be empty */ 928 /* FIXME: we should wait for ring to be empty */
930 r700_cp_stop(rdev); 929 r700_cp_stop(rdev);
931 rdev->cp.ready = false; 930 rdev->cp.ready = false;
931 r600_wb_disable(rdev);
932 rv770_pcie_gart_disable(rdev); 932 rv770_pcie_gart_disable(rdev);
933
934 /* unpin shaders bo */ 933 /* unpin shaders bo */
935 radeon_object_unpin(rdev->r600_blit.shader_obj); 934 radeon_object_unpin(rdev->r600_blit.shader_obj);
936 return 0; 935 return 0;
@@ -1048,6 +1047,7 @@ void rv770_fini(struct radeon_device *rdev)
1048 1047
1049 r600_blit_fini(rdev); 1048 r600_blit_fini(rdev);
1050 radeon_ring_fini(rdev); 1049 radeon_ring_fini(rdev);
1050 r600_wb_fini(rdev);
1051 rv770_pcie_gart_fini(rdev); 1051 rv770_pcie_gart_fini(rdev);
1052 radeon_gem_fini(rdev); 1052 radeon_gem_fini(rdev);
1053 radeon_fence_driver_fini(rdev); 1053 radeon_fence_driver_fini(rdev);