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)
committerHiroshi Doyu <hdoyu@nvidia.com>
Fri, 7 Sep 2012 08:46:09 +0000 (11:46 +0300)
commitb9fd4fa966e67f743744ce9c75ce9c81133f9f42
treeb8390d46325fb4ad3721e4f07e05bb8fcc9778f7
parent4930412db0e6ee5ff7c76520756ee1f5cdf68e4b
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