usb: gadget: uvc: move video disable logic to its own function
authorAvichal Rakesh <arakesh@google.com>
Thu, 9 Nov 2023 00:41:03 +0000 (16:41 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Nov 2023 12:32:44 +0000 (12:32 +0000)
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@ideasonboard.com>
Suggested-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Avichal Rakesh <arakesh@google.com>
Link: https://lore.kernel.org/r/20231109004104.3467968-3-arakesh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/uvc_v4l2.c
drivers/usb/gadget/function/uvc_video.c
drivers/usb/gadget/function/uvc_video.h

index 7cb8d027ff0c359b9fe3edbe0aede1b8dd23b303..904dd283cbf721735fd943973b54c0980e71ab0c 100644 (file)
@@ -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);
index 1619f9664748d4a834d9cf6b65654116e2aadb6d..c3e8c48f46a9514fa116d0910b063320ebc95067 100644 (file)
@@ -493,31 +493,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)
index 03adeefa343b71e2dcb15cb61d03834430000cc0..8ef6259741f1313a88bd992e7be65241a65dd634 100644 (file)
@@ -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);