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 | } |