Re: [PATCH V4 2/2] usb: gadget/uvc: Add support for 'get_unmapped_area' for MMUless architectures

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bhupesh,

Thanks for the patch.

On Thursday 21 March 2013 13:56:09 Bhupesh Sharma wrote:
> This patch adds the support for 'get_unmapped_area' in UVC gadget
> which is called when the 'mmap' system call is executed on MMUless
> architectures.
> 
> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@xxxxxx>

Acked-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
>  drivers/usb/gadget/uvc_queue.c |   18 ++++++++++++++++++
>  drivers/usb/gadget/uvc_v4l2.c  |   15 +++++++++++++++
>  2 files changed, 33 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/usb/gadget/uvc_queue.c b/drivers/usb/gadget/uvc_queue.c
> index 3f5eeae..d0b8e38 100644
> --- a/drivers/usb/gadget/uvc_queue.c
> +++ b/drivers/usb/gadget/uvc_queue.c
> @@ -228,6 +228,24 @@ static int uvc_queue_mmap(struct uvc_video_queue
> *queue, return ret;
>  }
> 
> +#ifndef CONFIG_MMU
> +/*
> + * Get unmapped area.
> + *
> + * NO-MMU arch need this function to make mmap() work correctly.
> + */
> +static unsigned long uvc_queue_get_unmapped_area(struct uvc_video_queue
> *queue, +		unsigned long pgoff)
> +{
> +	unsigned long ret;
> +
> +	mutex_lock(&queue->mutex);
> +	ret = vb2_get_unmapped_area(&queue->queue, 0, 0, pgoff, 0);
> +	mutex_unlock(&queue->mutex);
> +	return ret;
> +}
> +#endif
> +
>  /*
>   * Cancel the video buffers queue.
>   *
> diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
> index 7d91740..b83d0ad 100644
> --- a/drivers/usb/gadget/uvc_v4l2.c
> +++ b/drivers/usb/gadget/uvc_v4l2.c
> @@ -340,6 +340,18 @@ uvc_v4l2_poll(struct file *file, poll_table *wait)
>  	return uvc_queue_poll(&uvc->video.queue, file, wait);
>  }
> 
> +#ifndef CONFIG_MMU
> +static unsigned long uvc_v4l2_get_unmapped_area(struct file *file,
> +		unsigned long addr, unsigned long len, unsigned long pgoff,
> +		unsigned long flags)
> +{
> +	struct video_device *vdev = video_devdata(file);
> +	struct uvc_device *uvc = video_get_drvdata(vdev);
> +
> +	return uvc_queue_get_unmapped_area(&uvc->video.queue, pgoff);
> +}
> +#endif
> +
>  static struct v4l2_file_operations uvc_v4l2_fops = {
>  	.owner		= THIS_MODULE,
>  	.open		= uvc_v4l2_open,
> @@ -347,5 +359,8 @@ static struct v4l2_file_operations uvc_v4l2_fops = {
>  	.ioctl		= uvc_v4l2_ioctl,
>  	.mmap		= uvc_v4l2_mmap,
>  	.poll		= uvc_v4l2_poll,
> +#ifndef CONFIG_MMU
> +	.get_unmapped_area = uvc_v4l2_get_unmapped_area,
> +#endif
>  };
-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux