Rev 1275 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1275 | Rev 1313 | ||
---|---|---|---|
Line 50... | Line 50... | ||
50 | { |
50 | { |
51 | int r = 0; |
51 | int r = 0; |
Line 52... | Line 52... | ||
52 | 52 | ||
Line 53... | Line 53... | ||
53 | ENTER(); |
53 | ENTER(); |
54 | 54 | ||
55 | r = drm_mm_init(&mm_vram, 0x800000 >> PAGE_SHIFT, |
55 | r = drm_mm_init(&mm_vram, 0xC00000 >> PAGE_SHIFT, |
56 | ((rdev->mc.real_vram_size - 0x800000) >> PAGE_SHIFT)); |
56 | ((rdev->mc.real_vram_size - 0xC00000) >> PAGE_SHIFT)); |
57 | if (r) { |
57 | if (r) { |
58 | DRM_ERROR("Failed initializing VRAM heap.\n"); |
58 | DRM_ERROR("Failed initializing VRAM heap.\n"); |
Line 295... | Line 295... | ||
295 | { |
295 | { |
296 | robj->cpu_addr = robj->rdev->mc.aper_base + |
296 | robj->cpu_addr = robj->rdev->mc.aper_base + |
297 | (robj->vm_addr << PAGE_SHIFT); |
297 | (robj->vm_addr << PAGE_SHIFT); |
298 | robj->kptr = (void*)MapIoMem(robj->cpu_addr, |
298 | robj->kptr = (void*)MapIoMem(robj->cpu_addr, |
299 | robj->mm_node->size << 12, PG_SW); |
299 | robj->mm_node->size << 12, PG_SW); |
300 | // dbgprintf("map io mem %x at %x\n", robj->cpu_addr, robj->kptr); |
- | |
301 | - | ||
302 | } |
300 | } |
303 | else |
301 | else |
304 | { |
302 | { |
305 | return -1; |
303 | return -1; |
306 | } |
304 | } |
Line 326... | Line 324... | ||
326 | robj->kptr = NULL; |
324 | robj->kptr = NULL; |
327 | } |
325 | } |
328 | // spin_unlock(&robj->tobj.lock); |
326 | // spin_unlock(&robj->tobj.lock); |
329 | } |
327 | } |
Line 330... | Line -... | ||
330 | - | ||
Line 331... | Line 328... | ||
331 | #if 0 |
328 | |
332 | 329 | ||
333 | void radeon_object_unpin(struct radeon_object *robj) |
330 | void radeon_object_unpin(struct radeon_object *robj) |
334 | { |
331 | { |
Line 345... | Line 342... | ||
345 | if (robj->pin_count) { |
342 | if (robj->pin_count) { |
346 | // spin_unlock(&robj->tobj.lock); |
343 | // spin_unlock(&robj->tobj.lock); |
347 | return; |
344 | return; |
348 | } |
345 | } |
349 | // spin_unlock(&robj->tobj.lock); |
346 | // spin_unlock(&robj->tobj.lock); |
350 | r = radeon_object_reserve(robj, false); |
- | |
351 | if (unlikely(r != 0)) { |
- | |
352 | DRM_ERROR("radeon: failed to reserve object for unpinning it.\n"); |
- | |
353 | return; |
- | |
354 | } |
- | |
355 | flags = robj->tobj.mem.placement; |
- | |
356 | robj->tobj.proposed_placement = flags & ~TTM_PL_FLAG_NO_EVICT; |
- | |
357 | r = ttm_buffer_object_validate(&robj->tobj, |
- | |
358 | robj->tobj.proposed_placement, |
- | |
359 | false, false); |
- | |
360 | if (unlikely(r != 0)) { |
- | |
361 | DRM_ERROR("radeon: failed to unpin buffer.\n"); |
- | |
362 | } |
- | |
363 | radeon_object_unreserve(robj); |
- | |
364 | } |
- | |
Line -... | Line 347... | ||
- | 347 | ||
Line -... | Line 348... | ||
- | 348 | drm_mm_put_block(robj->mm_node); |
|
- | 349 | ||
Line -... | Line 350... | ||
- | 350 | kfree(robj); |
|
- | 351 | } |
|
Line 365... | Line 352... | ||
365 | 352 | ||
366 | 353 | ||
367 | 354 | #if 0 |
|
368 | 355 |