diff options
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-mem2mem.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-mem2mem.c | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c index e7f4bf5bc8dd..e2654b422334 100644 --- a/drivers/media/v4l2-core/v4l2-mem2mem.c +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c @@ -966,6 +966,27 @@ int v4l2_m2m_mmap(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,  }  EXPORT_SYMBOL(v4l2_m2m_mmap); +#ifndef CONFIG_MMU +unsigned long v4l2_m2m_get_unmapped_area(struct file *file, unsigned long addr, +					 unsigned long len, unsigned long pgoff, +					 unsigned long flags) +{ +	struct v4l2_fh *fh = file->private_data; +	unsigned long offset = pgoff << PAGE_SHIFT; +	struct vb2_queue *vq; + +	if (offset < DST_QUEUE_OFF_BASE) { +		vq = v4l2_m2m_get_src_vq(fh->m2m_ctx); +	} else { +		vq = v4l2_m2m_get_dst_vq(fh->m2m_ctx); +		pgoff -= (DST_QUEUE_OFF_BASE >> PAGE_SHIFT); +	} + +	return vb2_get_unmapped_area(vq, addr, len, pgoff, flags); +} +EXPORT_SYMBOL_GPL(v4l2_m2m_get_unmapped_area); +#endif +  #if defined(CONFIG_MEDIA_CONTROLLER)  void v4l2_m2m_unregister_media_controller(struct v4l2_m2m_dev *m2m_dev)  { |