diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-10-01 12:02:12 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-10-01 19:33:52 -0400 |
commit | 81cc35bfc19ebe4b823396fe4fef67a923360916 (patch) | |
tree | da9cbddd170b1c93067f9c8e6411cbe02860f3e2 /drivers/gpu/drm/radeon/rv770.c | |
parent | 62a8ea3f7bb61e5f92db0a648b7cc566852c36ec (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.c | 8 |
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); |