[media] omap3isp: queue: Don't build scatterlist for kernel buffer
The scatterlist is not needed for those buffers, don't build it. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Sakari Ailus <sakari.ailus@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
2a0a5472af
commit
1e345d4ab4
|
@ -146,21 +146,6 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* isp_video_buffer_prepare_kernel - Build scatter list for a kernel-allocated
|
||||
* buffer
|
||||
*
|
||||
* Retrieve the sgtable using the DMA API.
|
||||
*/
|
||||
static int isp_video_buffer_prepare_kernel(struct isp_video_buffer *buf)
|
||||
{
|
||||
struct isp_video_fh *vfh = isp_video_queue_to_isp_video_fh(buf->queue);
|
||||
struct isp_video *video = vfh->video;
|
||||
|
||||
return dma_get_sgtable(video->isp->dev, &buf->sgt, buf->vaddr,
|
||||
buf->dma, PAGE_ALIGN(buf->vbuf.length));
|
||||
}
|
||||
|
||||
/*
|
||||
* isp_video_buffer_cleanup - Release pages for a userspace VMA.
|
||||
*
|
||||
|
@ -181,10 +166,9 @@ static void isp_video_buffer_cleanup(struct isp_video_buffer *buf)
|
|||
? DMA_FROM_DEVICE : DMA_TO_DEVICE;
|
||||
dma_unmap_sg_attrs(buf->queue->dev, buf->sgt.sgl,
|
||||
buf->sgt.orig_nents, direction, &attrs);
|
||||
sg_free_table(&buf->sgt);
|
||||
}
|
||||
|
||||
sg_free_table(&buf->sgt);
|
||||
|
||||
if (buf->pages != NULL) {
|
||||
isp_video_buffer_lock_vma(buf, 0);
|
||||
|
||||
|
@ -400,7 +384,7 @@ done:
|
|||
*
|
||||
* - validating VMAs (userspace buffers only)
|
||||
* - locking pages and VMAs into memory (userspace buffers only)
|
||||
* - building page and scatter-gather lists
|
||||
* - building page and scatter-gather lists (userspace buffers only)
|
||||
* - mapping buffers for DMA operation
|
||||
* - performing driver-specific preparation
|
||||
*
|
||||
|
@ -416,9 +400,7 @@ static int isp_video_buffer_prepare(struct isp_video_buffer *buf)
|
|||
|
||||
switch (buf->vbuf.memory) {
|
||||
case V4L2_MEMORY_MMAP:
|
||||
ret = isp_video_buffer_prepare_kernel(buf);
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
case V4L2_MEMORY_USERPTR:
|
||||
|
|
|
@ -70,8 +70,8 @@ enum isp_video_buffer_state {
|
|||
* @vaddr: Memory virtual address (for kernel buffers)
|
||||
* @vm_flags: Buffer VMA flags (for userspace buffers)
|
||||
* @npages: Number of pages (for userspace buffers)
|
||||
* @sgt: Scatter gather table (for userspace buffers)
|
||||
* @pages: Pages table (for userspace non-VM_PFNMAP buffers)
|
||||
* @sgt: Scatter gather table
|
||||
* @vbuf: V4L2 buffer
|
||||
* @irqlist: List head for insertion into IRQ queue
|
||||
* @state: Current buffer state
|
||||
|
@ -90,11 +90,11 @@ struct isp_video_buffer {
|
|||
/* For userspace buffers. */
|
||||
vm_flags_t vm_flags;
|
||||
unsigned int npages;
|
||||
struct page **pages;
|
||||
|
||||
/* For all buffers. */
|
||||
struct sg_table sgt;
|
||||
|
||||
/* For non-VM_PFNMAP userspace buffers. */
|
||||
struct page **pages;
|
||||
|
||||
/* Touched by the interrupt handler. */
|
||||
struct v4l2_buffer vbuf;
|
||||
struct list_head irqlist;
|
||||
|
|
Loading…
Reference in New Issue