mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
Revert "drm/drm-prime: cache dma_buf import context"
This reverts commit 09d07c8016.
Change-Id: Ifb57a691d55e108589b77037a9b9d88328cd9415
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
This commit is contained in:
@@ -91,13 +91,6 @@ struct drm_prime_attachment {
|
||||
enum dma_data_direction dir;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
struct drm_prime_callback_data {
|
||||
struct drm_gem_object *obj;
|
||||
struct sg_table *sgt;
|
||||
};
|
||||
#endif
|
||||
|
||||
static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv,
|
||||
struct dma_buf *dma_buf, uint32_t handle)
|
||||
{
|
||||
@@ -685,25 +678,6 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
static void drm_gem_prime_dmabuf_release_callback(void *data)
|
||||
{
|
||||
struct drm_prime_callback_data *cb_data = data;
|
||||
|
||||
if (cb_data && cb_data->obj && cb_data->obj->import_attach) {
|
||||
struct dma_buf_attachment *attach = cb_data->obj->import_attach;
|
||||
struct sg_table *sgt = cb_data->sgt;
|
||||
|
||||
if (sgt)
|
||||
dma_buf_unmap_attachment(attach, sgt,
|
||||
DMA_BIDIRECTIONAL);
|
||||
dma_buf_detach(attach->dmabuf, attach);
|
||||
drm_gem_object_put_unlocked(cb_data->obj);
|
||||
kfree(cb_data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* drm_gem_prime_mmap - PRIME mmap function for GEM drivers
|
||||
* @obj: GEM object
|
||||
@@ -758,9 +732,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
|
||||
struct dma_buf_attachment *attach;
|
||||
struct sg_table *sgt;
|
||||
struct drm_gem_object *obj;
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
struct drm_prime_callback_data *cb_data = NULL;
|
||||
#endif
|
||||
int ret;
|
||||
|
||||
if (dma_buf->ops == &drm_gem_prime_dmabuf_ops) {
|
||||
@@ -775,15 +746,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
cb_data = dma_buf_get_release_callback_data(dma_buf,
|
||||
drm_gem_prime_dmabuf_release_callback);
|
||||
if (cb_data && cb_data->obj && cb_data->obj->dev == dev) {
|
||||
drm_gem_object_get(cb_data->obj);
|
||||
return cb_data->obj;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!dev->driver->gem_prime_import_sg_table)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
@@ -793,14 +755,6 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
|
||||
|
||||
get_dma_buf(dma_buf);
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
cb_data = kmalloc(sizeof(*cb_data), GFP_KERNEL);
|
||||
if (!cb_data) {
|
||||
ret = -ENOMEM;
|
||||
goto fail_detach;
|
||||
}
|
||||
#endif
|
||||
|
||||
sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL);
|
||||
if (IS_ERR(sgt)) {
|
||||
ret = PTR_ERR(sgt);
|
||||
@@ -815,23 +769,11 @@ struct drm_gem_object *drm_gem_prime_import_dev(struct drm_device *dev,
|
||||
|
||||
obj->import_attach = attach;
|
||||
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
cb_data->obj = obj;
|
||||
cb_data->sgt = sgt;
|
||||
dma_buf_set_release_callback(dma_buf,
|
||||
drm_gem_prime_dmabuf_release_callback, cb_data);
|
||||
dma_buf_put(dma_buf);
|
||||
drm_gem_object_get(obj);
|
||||
#endif
|
||||
|
||||
return obj;
|
||||
|
||||
fail_unmap:
|
||||
dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL);
|
||||
fail_detach:
|
||||
#ifdef CONFIG_ARCH_ROCKCHIP
|
||||
kfree(cb_data);
|
||||
#endif
|
||||
dma_buf_detach(dma_buf, attach);
|
||||
dma_buf_put(dma_buf);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user