.. | .. |
---|
23 | 23 | * |
---|
24 | 24 | * Authors: Alex Deucher |
---|
25 | 25 | */ |
---|
26 | | -#include <drm/drmP.h> |
---|
| 26 | + |
---|
| 27 | +#include <linux/dma-buf.h> |
---|
| 28 | + |
---|
| 29 | +#include <drm/drm_prime.h> |
---|
| 30 | +#include <drm/radeon_drm.h> |
---|
27 | 31 | |
---|
28 | 32 | #include "radeon.h" |
---|
29 | | -#include <drm/radeon_drm.h> |
---|
30 | | -#include <linux/dma-buf.h> |
---|
31 | 33 | |
---|
32 | 34 | struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj) |
---|
33 | 35 | { |
---|
34 | 36 | struct radeon_bo *bo = gem_to_radeon_bo(obj); |
---|
35 | 37 | int npages = bo->tbo.num_pages; |
---|
36 | 38 | |
---|
37 | | - return drm_prime_pages_to_sg(bo->tbo.ttm->pages, npages); |
---|
| 39 | + return drm_prime_pages_to_sg(obj->dev, bo->tbo.ttm->pages, npages); |
---|
38 | 40 | } |
---|
39 | 41 | |
---|
40 | 42 | void *radeon_gem_prime_vmap(struct drm_gem_object *obj) |
---|
.. | .. |
---|
61 | 63 | struct dma_buf_attachment *attach, |
---|
62 | 64 | struct sg_table *sg) |
---|
63 | 65 | { |
---|
64 | | - struct reservation_object *resv = attach->dmabuf->resv; |
---|
| 66 | + struct dma_resv *resv = attach->dmabuf->resv; |
---|
65 | 67 | struct radeon_device *rdev = dev->dev_private; |
---|
66 | 68 | struct radeon_bo *bo; |
---|
67 | 69 | int ret; |
---|
68 | 70 | |
---|
69 | | - ww_mutex_lock(&resv->lock, NULL); |
---|
| 71 | + dma_resv_lock(resv, NULL); |
---|
70 | 72 | ret = radeon_bo_create(rdev, attach->dmabuf->size, PAGE_SIZE, false, |
---|
71 | 73 | RADEON_GEM_DOMAIN_GTT, 0, sg, resv, &bo); |
---|
72 | | - ww_mutex_unlock(&resv->lock); |
---|
| 74 | + dma_resv_unlock(resv); |
---|
73 | 75 | if (ret) |
---|
74 | 76 | return ERR_PTR(ret); |
---|
75 | 77 | |
---|
.. | .. |
---|
78 | 80 | mutex_unlock(&rdev->gem.mutex); |
---|
79 | 81 | |
---|
80 | 82 | bo->prime_shared_count = 1; |
---|
81 | | - return &bo->gem_base; |
---|
| 83 | + return &bo->tbo.base; |
---|
82 | 84 | } |
---|
83 | 85 | |
---|
84 | 86 | int radeon_gem_prime_pin(struct drm_gem_object *obj) |
---|
.. | .. |
---|
125 | 127 | } |
---|
126 | 128 | |
---|
127 | 129 | |
---|
128 | | -struct reservation_object *radeon_gem_prime_res_obj(struct drm_gem_object *obj) |
---|
129 | | -{ |
---|
130 | | - struct radeon_bo *bo = gem_to_radeon_bo(obj); |
---|
131 | | - |
---|
132 | | - return bo->tbo.resv; |
---|
133 | | -} |
---|
134 | | - |
---|
135 | | -struct dma_buf *radeon_gem_prime_export(struct drm_device *dev, |
---|
136 | | - struct drm_gem_object *gobj, |
---|
| 130 | +struct dma_buf *radeon_gem_prime_export(struct drm_gem_object *gobj, |
---|
137 | 131 | int flags) |
---|
138 | 132 | { |
---|
139 | 133 | struct radeon_bo *bo = gem_to_radeon_bo(gobj); |
---|
140 | | - if (radeon_ttm_tt_has_userptr(bo->tbo.ttm)) |
---|
| 134 | + if (radeon_ttm_tt_has_userptr(bo->rdev, bo->tbo.ttm)) |
---|
141 | 135 | return ERR_PTR(-EPERM); |
---|
142 | | - return drm_gem_prime_export(dev, gobj, flags); |
---|
| 136 | + return drm_gem_prime_export(gobj, flags); |
---|
143 | 137 | } |
---|