scatterlist: add sg_alloc_table_from_pages function
authorTomasz Stanislawski <t.stanislaws@samsung.com>
Mon, 18 Jun 2012 07:25:01 +0000 (09:25 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 30 Jul 2012 10:25:44 +0000 (12:25 +0200)
commitefc42bc98058a36d761b16a114823db1a902ed05
tree3ba9403ec5b4a8619bde6a7fd1eaa3c14843ad3d
parent28a33cbc24e4256c143dce96c7d93bf423229f92
scatterlist: add sg_alloc_table_from_pages function

This patch adds a new constructor for an sg table. The table is constructed
from an array of struct pages. All contiguous chunks of the pages are merged
into a single sg nodes. A user may provide an offset and a size of a buffer if
the buffer is not page-aligned.

The function is dedicated for DMABUF exporters which often perform conversion
from an page array to a scatterlist. Moreover the scatterlist should be
squashed in order to save memory and to speed-up the process of DMA mapping
using dma_map_sg.

The code is based on the patch 'v4l: vb2-dma-contig: add support for
scatterlist in userptr mode' and hints from Laurent Pinchart.

Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
CC: Andrew Morton <akpm@linux-foundation.org>
include/linux/scatterlist.h
lib/scatterlist.c