[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <46ec546d-f883-41ea-a493-e2179bd48469@ideasonboard.com>
Date: Sat, 28 Oct 2023 21:16:01 +0100
From: Dan Scally <dan.scally@...asonboard.com>
To: Avichal Rakesh <arakesh@...gle.com>
Cc: etalvala@...gle.com, gregkh@...uxfoundation.org,
jchowdhary@...gle.com, laurent.pinchart@...asonboard.com,
linux-kernel@...r.kernel.org, linux-usb@...r.kernel.org,
m.grzeschik@...gutronix.de
Subject: Re: [PATCH v9 3/4] usb: gadget: uvc: move video disable logic to its
own function
Hi Avichal
On 27/10/2023 21:19, Avichal Rakesh wrote:
> This patch refactors the video disable logic in uvcg_video_enable
> into its own separate function 'uvcg_video_disable'. This function
> is now used anywhere uvcg_video_enable(video, 0) was used.
>
> Reviewed-by: Daniel Scally <dan.scally@...asonboard.com>
For this patch you can keep the R-b - it's fine by me now :)
> Suggested-by: Michael Grzeschik <m.grzeschik@...gutronix.de>
> Signed-off-by: Avichal Rakesh <arakesh@...gle.com>
> ---
> v6: Introduced this patch to make the next one easier to review
> v6 -> v7: Add Suggested-by
> v7 -> v8: No change. Getting back in review queue
> v8 -> v9: Call uvcg_video_disable directly instead of uvcg_video_enable(video, 0)
>
> drivers/usb/gadget/function/uvc_v4l2.c | 6 ++--
> drivers/usb/gadget/function/uvc_video.c | 40 ++++++++++++++++---------
> drivers/usb/gadget/function/uvc_video.h | 3 +-
> 3 files changed, 31 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c
> index 7cb8d027ff0c..904dd283cbf7 100644
> --- a/drivers/usb/gadget/function/uvc_v4l2.c
> +++ b/drivers/usb/gadget/function/uvc_v4l2.c
> @@ -443,7 +443,7 @@ uvc_v4l2_streamon(struct file *file, void *fh, enum v4l2_buf_type type)
> return -EINVAL;
>
> /* Enable UVC video. */
> - ret = uvcg_video_enable(video, 1);
> + ret = uvcg_video_enable(video);
> if (ret < 0)
> return ret;
>
> @@ -469,7 +469,7 @@ uvc_v4l2_streamoff(struct file *file, void *fh, enum v4l2_buf_type type)
> return -EINVAL;
>
> uvc->state = UVC_STATE_CONNECTED;
> - ret = uvcg_video_enable(video, 0);
> + ret = uvcg_video_disable(video);
> if (ret < 0)
> return ret;
>
> @@ -515,7 +515,7 @@ static void uvc_v4l2_disable(struct uvc_device *uvc)
> if (uvc->state == UVC_STATE_STREAMING)
> uvc->state = UVC_STATE_CONNECTED;
>
> - uvcg_video_enable(&uvc->video, 0);
> + uvcg_video_disable(&uvc->video);
> uvcg_free_buffers(&uvc->video.queue);
> uvc->func_connected = false;
> wake_up_interruptible(&uvc->func_connected_queue);
> diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
> index f8f9209fee50..1081dd790fd6 100644
> --- a/drivers/usb/gadget/function/uvc_video.c
> +++ b/drivers/usb/gadget/function/uvc_video.c
> @@ -494,31 +494,43 @@ static void uvcg_video_pump(struct work_struct *work)
> }
>
> /*
> - * Enable or disable the video stream.
> + * Disable the video stream
> */
> -int uvcg_video_enable(struct uvc_video *video, int enable)
> +int
> +uvcg_video_disable(struct uvc_video *video)
> {
> - int ret;
> struct uvc_request *ureq;
>
> if (video->ep == NULL) {
> uvcg_info(&video->uvc->func,
> - "Video enable failed, device is uninitialized.\n");
> + "Video disable failed, device is uninitialized.\n");
> return -ENODEV;
> }
>
> - if (!enable) {
> - cancel_work_sync(&video->pump);
> - uvcg_queue_cancel(&video->queue, 0);
> + cancel_work_sync(&video->pump);
> + uvcg_queue_cancel(&video->queue, 0);
>
> - list_for_each_entry(ureq, &video->ureqs, list) {
> - if (ureq->req)
> - usb_ep_dequeue(video->ep, ureq->req);
> - }
> + list_for_each_entry(ureq, &video->ureqs, list) {
> + if (ureq->req)
> + usb_ep_dequeue(video->ep, ureq->req);
> + }
>
> - uvc_video_free_requests(video);
> - uvcg_queue_enable(&video->queue, 0);
> - return 0;
> + uvc_video_free_requests(video);
> + uvcg_queue_enable(&video->queue, 0);
> + return 0;
> +}
> +
> +/*
> + * Enable the video stream.
> + */
> +int uvcg_video_enable(struct uvc_video *video)
> +{
> + int ret;
> +
> + if (video->ep == NULL) {
> + uvcg_info(&video->uvc->func,
> + "Video enable failed, device is uninitialized.\n");
> + return -ENODEV;
> }
>
> if ((ret = uvcg_queue_enable(&video->queue, 1)) < 0)
> diff --git a/drivers/usb/gadget/function/uvc_video.h b/drivers/usb/gadget/function/uvc_video.h
> index 03adeefa343b..8ef6259741f1 100644
> --- a/drivers/usb/gadget/function/uvc_video.h
> +++ b/drivers/usb/gadget/function/uvc_video.h
> @@ -14,7 +14,8 @@
>
> struct uvc_video;
>
> -int uvcg_video_enable(struct uvc_video *video, int enable);
> +int uvcg_video_enable(struct uvc_video *video);
> +int uvcg_video_disable(struct uvc_video *video);
>
> int uvcg_video_init(struct uvc_video *video, struct uvc_device *uvc);
>
> --
> 2.42.0.820.g83a721a137-goog
Powered by blists - more mailing lists