diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-09-14 12:29:49 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-09-14 18:53:14 -0400 |
commit | 4aac047323e3082d0866b8ad3784236632105af4 (patch) | |
tree | af4c118e42b9ea55c961c4f5bbb02998dc2cc4fe /drivers/gpu/drm/radeon/radeon_gart.c | |
parent | 21f9a437222e92adb3abc68584a5f04801b92739 (diff) |
drm/radeon/kms: clear confusion in GART init/deinit path
GART static one time initialization was mixed up with GART
enabling/disabling which could happen several time for instance
during suspend/resume cycles. This patch splits all GART
handling into 4 differents function. gart_init is for one
time initialization, gart_deinit is called upon module unload
to free resources allocated by gart_init, gart_enable enable
the GART and is intented to be call after first initialization
and at each resume cycle or reset cycle. Finaly gart_disable
stop the GART and is intended to be call at suspend time or
when unloading the module.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_gart.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gart.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index 2977539880fb..a931af065dd4 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c | |||
@@ -75,7 +75,6 @@ void radeon_gart_table_ram_free(struct radeon_device *rdev) | |||
75 | 75 | ||
76 | int radeon_gart_table_vram_alloc(struct radeon_device *rdev) | 76 | int radeon_gart_table_vram_alloc(struct radeon_device *rdev) |
77 | { | 77 | { |
78 | uint64_t gpu_addr; | ||
79 | int r; | 78 | int r; |
80 | 79 | ||
81 | if (rdev->gart.table.vram.robj == NULL) { | 80 | if (rdev->gart.table.vram.robj == NULL) { |
@@ -88,6 +87,14 @@ int radeon_gart_table_vram_alloc(struct radeon_device *rdev) | |||
88 | return r; | 87 | return r; |
89 | } | 88 | } |
90 | } | 89 | } |
90 | return 0; | ||
91 | } | ||
92 | |||
93 | int radeon_gart_table_vram_pin(struct radeon_device *rdev) | ||
94 | { | ||
95 | uint64_t gpu_addr; | ||
96 | int r; | ||
97 | |||
91 | r = radeon_object_pin(rdev->gart.table.vram.robj, | 98 | r = radeon_object_pin(rdev->gart.table.vram.robj, |
92 | RADEON_GEM_DOMAIN_VRAM, &gpu_addr); | 99 | RADEON_GEM_DOMAIN_VRAM, &gpu_addr); |
93 | if (r) { | 100 | if (r) { |