Rev 1119 | Rev 1125 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1119 | Rev 1120 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | #include "radeon_drm.h" |
30 | #include "radeon_drm.h" |
31 | #include "radeon_reg.h" |
31 | #include "radeon_reg.h" |
32 | #include "radeon.h" |
32 | #include "radeon.h" |
33 | #include "atom.h" |
33 | #include "atom.h" |
Line 34... | Line -... | ||
34 | - | ||
Line 35... | Line -... | ||
35 | extern void * ring_buffer; |
- | |
36 | 34 | ||
Line 37... | Line 35... | ||
37 | #if 0 |
35 | |
38 | int radeon_debugfs_ib_init(struct radeon_device *rdev); |
36 | int radeon_debugfs_ib_init(struct radeon_device *rdev); |
39 | 37 | ||
- | 38 | /* |
|
- | 39 | * IB. |
|
- | 40 | */ |
|
40 | /* |
41 | |
41 | * IB. |
42 | #if 0 |
42 | */ |
43 | |
43 | int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib) |
44 | int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib) |
44 | { |
45 | { |
Line 96... | Line 97... | ||
96 | (*ib)->fence = fence; |
97 | (*ib)->fence = fence; |
97 | } |
98 | } |
98 | return r; |
99 | return r; |
99 | } |
100 | } |
Line -... | Line 101... | ||
- | 101 | ||
100 | 102 | ||
101 | void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib) |
103 | void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib) |
102 | { |
104 | { |
Line 103... | Line 105... | ||
103 | struct radeon_ib *tmp = *ib; |
105 | struct radeon_ib *tmp = *ib; |
Line 168... | Line 170... | ||
168 | radeon_ring_unlock_commit(rdev); |
170 | radeon_ring_unlock_commit(rdev); |
169 | list_add_tail(&ib->list, &rdev->ib_pool.scheduled_ibs); |
171 | list_add_tail(&ib->list, &rdev->ib_pool.scheduled_ibs); |
170 | mutex_unlock(&rdev->ib_pool.mutex); |
172 | mutex_unlock(&rdev->ib_pool.mutex); |
171 | return 0; |
173 | return 0; |
172 | } |
174 | } |
- | 175 | #endif |
|
Line 173... | Line 176... | ||
173 | 176 | ||
174 | int radeon_ib_pool_init(struct radeon_device *rdev) |
177 | int radeon_ib_pool_init(struct radeon_device *rdev) |
175 | { |
178 | { |
176 | void *ptr; |
179 | void *ptr; |
Line 208... | Line 211... | ||
208 | INIT_LIST_HEAD(&rdev->ib_pool.ibs[i].list); |
211 | INIT_LIST_HEAD(&rdev->ib_pool.ibs[i].list); |
209 | } |
212 | } |
210 | bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); |
213 | bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); |
211 | rdev->ib_pool.ready = true; |
214 | rdev->ib_pool.ready = true; |
212 | DRM_INFO("radeon: ib pool ready.\n"); |
215 | DRM_INFO("radeon: ib pool ready.\n"); |
213 | if (radeon_debugfs_ib_init(rdev)) { |
216 | // if (radeon_debugfs_ib_init(rdev)) { |
214 | DRM_ERROR("Failed to register debugfs file for IB !\n"); |
217 | // DRM_ERROR("Failed to register debugfs file for IB !\n"); |
215 | } |
218 | // } |
216 | return r; |
219 | return r; |
217 | } |
220 | } |
Line 218... | Line 221... | ||
218 | 221 | ||
219 | void radeon_ib_pool_fini(struct radeon_device *rdev) |
222 | void radeon_ib_pool_fini(struct radeon_device *rdev) |
220 | { |
223 | { |
221 | if (!rdev->ib_pool.ready) { |
224 | if (!rdev->ib_pool.ready) { |
222 | return; |
225 | return; |
223 | } |
226 | } |
224 | mutex_lock(&rdev->ib_pool.mutex); |
227 | // mutex_lock(&rdev->ib_pool.mutex); |
225 | bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); |
228 | bitmap_zero(rdev->ib_pool.alloc_bm, RADEON_IB_POOL_SIZE); |
226 | if (rdev->ib_pool.robj) { |
229 | if (rdev->ib_pool.robj) { |
227 | radeon_object_kunmap(rdev->ib_pool.robj); |
230 | // radeon_object_kunmap(rdev->ib_pool.robj); |
228 | radeon_object_unref(&rdev->ib_pool.robj); |
231 | // radeon_object_unref(&rdev->ib_pool.robj); |
229 | rdev->ib_pool.robj = NULL; |
232 | rdev->ib_pool.robj = NULL; |
230 | } |
233 | } |
231 | mutex_unlock(&rdev->ib_pool.mutex); |
234 | // mutex_unlock(&rdev->ib_pool.mutex); |
Line -... | Line 235... | ||
- | 235 | } |
|
- | 236 | ||
232 | } |
237 | #if 0 |
233 | 238 | ||
234 | int radeon_ib_test(struct radeon_device *rdev) |
239 | int radeon_ib_test(struct radeon_device *rdev) |
235 | { |
240 | { |
236 | struct radeon_ib *ib; |
241 | struct radeon_ib *ib; |
Line 400... | Line 405... | ||
400 | 405 | ||
401 | 406 | ||
Line 402... | Line -... | ||
402 | int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, |
- | |
Line 403... | Line 407... | ||
403 | int pages, u32_t *pagelist); |
407 | int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, |
404 | 408 | int pages, u32_t *pagelist); |
|
405 | #define page_tabs 0xFDC00000 |
409 | |
Line 406... | Line 410... | ||
406 | 410 | ||
Line 407... | Line 411... | ||
407 | 411 | ||
Line 408... | Line -... | ||
408 | int radeon_ring_init(struct radeon_device *rdev, unsigned ring_size) |
- | |
409 | { |
412 | int radeon_ring_init(struct radeon_device *rdev, unsigned ring_size) |
410 | int r; |
413 | { |
411 | 414 | int r; |
|
412 | dbgprintf("%s\n",__FUNCTION__); |
415 | |
413 | 416 | dbgprintf("%s\n",__FUNCTION__); |
|
Line 440... | Line 443... | ||
440 | DRM_ERROR("radeon: failed to map ring buffer (%d).\n", r); |
443 | DRM_ERROR("radeon: failed to map ring buffer (%d).\n", r); |
441 | // mutex_unlock(&rdev->cp.mutex); |
444 | // mutex_unlock(&rdev->cp.mutex); |
442 | return r; |
445 | return r; |
443 | } |
446 | } |
444 | } |
447 | } |
445 | #endif |
- | |
Line 446... | Line -... | ||
446 | - | ||
447 | dbgprintf("ring size %x\n", ring_size); |
- | |
448 | - | ||
Line 449... | Line 448... | ||
449 | dbgprintf("ring buffer %x\n", rdev->cp.ring ); |
448 | |
Line 450... | Line 449... | ||
450 | 449 | ||
Line 451... | Line 450... | ||
451 | rdev->cp.ring = ring_buffer; //CreateRingBuffer( ring_size, PG_SW ); |
450 | // rdev->cp.ring = CreateRingBuffer( ring_size, PG_SW ); |
Line 452... | Line 451... | ||
452 | 451 | ||
Line 453... | Line 452... | ||
453 | dbgprintf("ring buffer %x\n", rdev->cp.ring ); |
452 | dbgprintf("ring buffer %x\n", rdev->cp.ring ); |
Line 454... | Line 453... | ||
454 | 453 | ||
Line 455... | Line 454... | ||
455 | rdev->cp.gpu_addr = rdev->mc.gtt_location; |
454 | // rdev->cp.gpu_addr = rdev->mc.gtt_location; |
456 | 455 | ||
Line 457... | Line 456... | ||
457 | u32_t *pagelist = &((u32_t*)page_tabs)[(u32_t)rdev->cp.ring >> 12]; |
456 | // u32_t *pagelist = &((u32_t*)page_tabs)[(u32_t)rdev->cp.ring >> 12]; |