Subversion Repositories Kolibri OS

Rev

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