diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 30124f4916d2..51c4924b60b7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -313,6 +313,9 @@ struct amdgpu_ring_funcs { | |||
313 | void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib); | 313 | void (*pad_ib)(struct amdgpu_ring *ring, struct amdgpu_ib *ib); |
314 | unsigned (*init_cond_exec)(struct amdgpu_ring *ring); | 314 | unsigned (*init_cond_exec)(struct amdgpu_ring *ring); |
315 | void (*patch_cond_exec)(struct amdgpu_ring *ring, unsigned offset); | 315 | void (*patch_cond_exec)(struct amdgpu_ring *ring, unsigned offset); |
316 | /* note usage for clock and power gating */ | ||
317 | void (*begin_use)(struct amdgpu_ring *ring); | ||
318 | void (*end_use)(struct amdgpu_ring *ring); | ||
316 | }; | 319 | }; |
317 | 320 | ||
318 | /* | 321 | /* |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c index f305f6309e8e..85aeb0a804bb 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | |||
@@ -75,6 +75,10 @@ int amdgpu_ring_alloc(struct amdgpu_ring *ring, unsigned ndw) | |||
75 | 75 | ||
76 | ring->count_dw = ndw; | 76 | ring->count_dw = ndw; |
77 | ring->wptr_old = ring->wptr; | 77 | ring->wptr_old = ring->wptr; |
78 | |||
79 | if (ring->funcs->begin_use) | ||
80 | ring->funcs->begin_use(ring); | ||
81 | |||
78 | return 0; | 82 | return 0; |
79 | } | 83 | } |
80 | 84 | ||
@@ -127,6 +131,9 @@ void amdgpu_ring_commit(struct amdgpu_ring *ring) | |||
127 | 131 | ||
128 | mb(); | 132 | mb(); |
129 | amdgpu_ring_set_wptr(ring); | 133 | amdgpu_ring_set_wptr(ring); |
134 | |||
135 | if (ring->funcs->end_use) | ||
136 | ring->funcs->end_use(ring); | ||
130 | } | 137 | } |
131 | 138 | ||
132 | /** | 139 | /** |
@@ -139,6 +146,9 @@ void amdgpu_ring_commit(struct amdgpu_ring *ring) | |||
139 | void amdgpu_ring_undo(struct amdgpu_ring *ring) | 146 | void amdgpu_ring_undo(struct amdgpu_ring *ring) |
140 | { | 147 | { |
141 | ring->wptr = ring->wptr_old; | 148 | ring->wptr = ring->wptr_old; |
149 | |||
150 | if (ring->funcs->end_use) | ||
151 | ring->funcs->end_use(ring); | ||
142 | } | 152 | } |
143 | 153 | ||
144 | /** | 154 | /** |