Revert "media: videobuf2-dma-sg: support contiguous page by dma attrs"

This reverts commit 46e7d9882b.

Change-Id: I8b7511cd20ae6a0b5cf853e1e07888ea55932bac
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2021-01-12 14:41:56 +08:00
committed by Tao Huang
parent 3972dc1b35
commit c5068a72e0

View File

@@ -10,7 +10,6 @@
* the Free Software Foundation.
*/
#include <linux/dma-contiguous.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/refcount.h>
@@ -38,7 +37,6 @@ struct vb2_dma_sg_buf {
struct page **pages;
struct frame_vector *vec;
int offset;
unsigned long attrs;
enum dma_data_direction dma_dir;
struct sg_table sg_table;
/*
@@ -98,23 +96,6 @@ static int vb2_dma_sg_alloc_compacted(struct vb2_dma_sg_buf *buf,
return 0;
}
static int vb2_dma_sg_alloc_contiguous(struct device *dev,
struct vb2_dma_sg_buf *buf, gfp_t gfp_flags)
{
struct page *page;
unsigned int i;
page = dma_alloc_from_contiguous(dev, buf->num_pages,
get_order(buf->size), gfp_flags & __GFP_NOWARN);
if (!page)
return -ENOMEM;
for (i = 0; i < buf->num_pages; i++)
buf->pages[i] = page + i;
return 0;
}
static void *vb2_dma_sg_alloc(struct device *dev, unsigned long dma_attrs,
unsigned long size, enum dma_data_direction dma_dir,
gfp_t gfp_flags)
@@ -132,7 +113,6 @@ static void *vb2_dma_sg_alloc(struct device *dev, unsigned long dma_attrs,
return ERR_PTR(-ENOMEM);
buf->vaddr = NULL;
buf->attrs = dma_attrs;
buf->dma_dir = dma_dir;
buf->offset = 0;
buf->size = size;
@@ -145,10 +125,7 @@ static void *vb2_dma_sg_alloc(struct device *dev, unsigned long dma_attrs,
if (!buf->pages)
goto fail_pages_array_alloc;
if (dma_attrs & DMA_ATTR_FORCE_CONTIGUOUS)
ret = vb2_dma_sg_alloc_contiguous(dev, buf, gfp_flags);
else
ret = vb2_dma_sg_alloc_compacted(buf, gfp_flags);
ret = vb2_dma_sg_alloc_compacted(buf, gfp_flags);
if (ret)
goto fail_pages_alloc;
@@ -185,11 +162,8 @@ fail_map:
sg_free_table(buf->dma_sgt);
fail_table_alloc:
num_pages = buf->num_pages;
if (dma_attrs & DMA_ATTR_FORCE_CONTIGUOUS)
dma_release_from_contiguous(dev, buf->pages[0], num_pages);
else
while (num_pages--)
__free_page(buf->pages[num_pages]);
while (num_pages--)
__free_page(buf->pages[num_pages]);
fail_pages_alloc:
kvfree(buf->pages);
fail_pages_array_alloc:
@@ -211,11 +185,8 @@ static void vb2_dma_sg_put(void *buf_priv)
if (buf->vaddr)
vm_unmap_ram(buf->vaddr, buf->num_pages);
sg_free_table(buf->dma_sgt);
if (buf->attrs & DMA_ATTR_FORCE_CONTIGUOUS)
dma_release_from_contiguous(buf->dev, buf->pages[0], i);
else
while (--i >= 0)
__free_page(buf->pages[i]);
while (--i >= 0)
__free_page(buf->pages[i]);
kvfree(buf->pages);
put_device(buf->dev);
kfree(buf);