Subversion Repositories Kolibri OS

Rev

Rev 1179 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1179 Rev 1182
Line 48... Line 48...
48
 
48
 
49
int radeon_object_init(struct radeon_device *rdev)
49
int radeon_object_init(struct radeon_device *rdev)
50
{
50
{
Line 51... Line 51...
51
    int r = 0;
51
    int r = 0;
Line 52... Line 52...
52
 
52
 
53
    dbgprintf("%s\n",__FUNCTION__);
53
    ENTER();
54
 
54
 
55
    r = drm_mm_init(&mm_vram, 0x800000 >> PAGE_SHIFT,
55
    r = drm_mm_init(&mm_vram, 0x800000 >> PAGE_SHIFT,
Line 99... Line 99...
99
    struct radeon_object *robj;
99
    struct radeon_object *robj;
100
    enum ttm_bo_type type;
100
    enum ttm_bo_type type;
101
    uint32_t flags;
101
    uint32_t flags;
102
    int r;
102
    int r;
Line 103... Line -...
103
 
-
 
104
    dbgprintf("%s\n",__FUNCTION__);
-
 
105
 
103
 
106
    if (kernel) {
104
    if (kernel) {
107
        type = ttm_bo_type_kernel;
105
        type = ttm_bo_type_kernel;
108
    } else {
106
    } else {
109
        type = ttm_bo_type_device;
107
        type = ttm_bo_type_device;
Line 119... Line 117...
119
 
117
 
Line 120... Line 118...
120
    flags = radeon_object_flags_from_domain(domain);
118
    flags = radeon_object_flags_from_domain(domain);
Line 121... Line -...
121
 
-
 
122
    robj->flags = flags;
-
 
123
 
119
 
124
    dbgprintf("robj flags %x\n", robj->flags);
120
    robj->flags = flags;
125
 
121
 
Line 126... Line 122...
126
    if( flags & TTM_PL_FLAG_VRAM)
122
    if( flags & TTM_PL_FLAG_VRAM)
Line 127... Line 123...
127
    {
123
    {
Line 128... Line 124...
128
        size_t num_pages;
124
        size_t num_pages;
129
 
125
 
130
        struct drm_mm_node *vm_node;
126
        struct drm_mm_node *vm_node;
131
 
127
 
132
        num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
128
        num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
133
 
129
 
Line 168... Line 164...
168
        struct drm_mm_node *vm_node;
164
        struct drm_mm_node *vm_node;
Line 169... Line 165...
169
 
165
 
Line 170... Line 166...
170
        num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
166
        num_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
171
 
167
 
172
        if (num_pages == 0) {
168
        if (num_pages == 0) {
173
            printk("Illegal buffer object size.\n");
169
            dbgprintf("Illegal buffer object size.\n");
174
            return -EINVAL;
170
            return -EINVAL;
175
        }
171
        }
Line 221... Line 217...
221
{
217
{
222
    uint32_t flags;
218
    uint32_t flags;
223
    uint32_t tmp;
219
    uint32_t tmp;
224
    int r = 0;
220
    int r = 0;
Line 225... Line -...
225
 
-
 
226
    dbgprintf("%s\n",__FUNCTION__);
-
 
227
 
221
 
228
//    flags = radeon_object_flags_from_domain(domain);
222
//    flags = radeon_object_flags_from_domain(domain);
229
//   spin_lock(&robj->tobj.lock);
223
//   spin_lock(&robj->tobj.lock);
230
    if (robj->pin_count) {
224
    if (robj->pin_count) {
231
        robj->pin_count++;
225
        robj->pin_count++;
Line 278... Line 272...
278
    robj->pin_count = 1;
272
    robj->pin_count = 1;
279
    if (unlikely(r != 0)) {
273
    if (unlikely(r != 0)) {
280
        DRM_ERROR("radeon: failed to pin object.\n");
274
        DRM_ERROR("radeon: failed to pin object.\n");
281
    }
275
    }
Line 282... Line -...
282
 
-
 
283
    dbgprintf("done %s\n",__FUNCTION__);
-
 
284
 
276
 
285
    return r;
277
    return r;
Line 286... Line 278...
286
}
278
}
287
 
279
 
288
int radeon_object_kmap(struct radeon_object *robj, void **ptr)
280
int radeon_object_kmap(struct radeon_object *robj, void **ptr)
Line 289... Line -...
289
{
-
 
290
    int r = 0;
-
 
291
 
281
{
292
    dbgprintf("%s\n",__FUNCTION__);
282
    int r = 0;
293
 
283
 
294
//   spin_lock(&robj->tobj.lock);
284
//   spin_lock(&robj->tobj.lock);
295
    if (robj->kptr) {
285
    if (robj->kptr) {
Line 317... Line 307...
317
 
307
 
318
    if (ptr) {
308
    if (ptr) {
319
        *ptr = robj->kptr;
309
        *ptr = robj->kptr;
Line 320... Line -...
320
    }
-
 
321
 
-
 
322
    dbgprintf("done %s\n",__FUNCTION__);
310
    }
323
 
311
 
Line -... Line 312...
-
 
312
    return 0;
-
 
313
}
-
 
314
 
-
 
315
void radeon_object_kunmap(struct radeon_object *robj)
-
 
316
{
-
 
317
//   spin_lock(&robj->tobj.lock);
-
 
318
    if (robj->kptr == NULL) {
-
 
319
//       spin_unlock(&robj->tobj.lock);
-
 
320
        return;
-
 
321
    }
-
 
322
 
-
 
323
    if (robj->flags & TTM_PL_FLAG_VRAM)
-
 
324
    {
-
 
325
        FreeKernelSpace(robj->kptr);
-
 
326
        robj->kptr = NULL;
Line 324... Line 327...
324
    return 0;
327
    }
Line 325... Line 328...
325
}
328
//   spin_unlock(&robj->tobj.lock);
326
 
329
}