Revert "usb: gadget: uvc: stop pump thread on video disable"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Oct 2023 08:51:11 +0000 (10:51 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Oct 2023 08:52:41 +0000 (10:52 +0200)
This reverts commit 3a63f86c6a6cb0601f0563a81574745da2979e3b.

Based on review comments, it was applied too soon and needs more work.

Reported-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://lore.kernel.org/r/20231005081716.GA13853@pendragon.ideasonboard.com
Cc: Michael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/uvc_video.c

index 4b68a3a9815d7339621b3b226271710049a2ae62..91af3b1ef0d412e9d71720afb38f24a703ec4e6e 100644 (file)
@@ -384,14 +384,13 @@ static void uvcg_video_pump(struct work_struct *work)
        struct uvc_video_queue *queue = &video->queue;
        /* video->max_payload_size is only set when using bulk transfer */
        bool is_bulk = video->max_payload_size;
-       struct uvc_device *uvc = video->uvc;
        struct usb_request *req = NULL;
        struct uvc_buffer *buf;
        unsigned long flags;
        bool buf_done;
        int ret;
 
-       while (video->ep->enabled && uvc->state == UVC_STATE_STREAMING) {
+       while (video->ep->enabled) {
                /*
                 * Retrieve the first available USB request, protected by the
                 * request lock.
@@ -489,7 +488,6 @@ static void uvcg_video_pump(struct work_struct *work)
  */
 int uvcg_video_enable(struct uvc_video *video, int enable)
 {
-       struct uvc_device *uvc = video->uvc;
        unsigned int i;
        int ret;
 
@@ -500,8 +498,6 @@ int uvcg_video_enable(struct uvc_video *video, int enable)
        }
 
        if (!enable) {
-               uvc->state = UVC_STATE_CONNECTED;
-
                cancel_work_sync(&video->pump);
                uvcg_queue_cancel(&video->queue, 0);
 
@@ -527,8 +523,6 @@ int uvcg_video_enable(struct uvc_video *video, int enable)
                video->encode = video->queue.use_sg ?
                        uvc_video_encode_isoc_sg : uvc_video_encode_isoc;
 
-       uvc->state = UVC_STATE_STREAMING;
-
        video->req_int_count = 0;
 
        queue_work(video->async_wq, &video->pump);