Revert "usb: gadget: uvc: wait for req complete before free req"

This reverts commit b37ab4ccd0.

Change-Id: I42a80e2d9c7c5691229c2d25c575ef246b6499dd
Signed-off-by: William Wu <william.wu@rock-chips.com>
This commit is contained in:
William Wu
2025-03-27 09:00:21 +08:00
committed by Tao Huang
parent dc2c85b45d
commit 52e4d9272b
2 changed files with 0 additions and 41 deletions

View File

@@ -82,9 +82,6 @@ struct uvc_request {
struct sg_table sgt;
u8 header[UVCG_REQUEST_HEADER_LEN];
struct uvc_buffer *last_buf;
#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI)
struct completion req_done;
#endif
};
struct uvc_video {

View File

@@ -33,42 +33,11 @@ static bool uvc_using_zero_copy(struct uvc_video *video)
else
return false;
}
static void uvc_wait_req_complete(struct uvc_video *video, struct uvc_request *ureq)
{
unsigned long flags;
struct usb_request *req;
int ret;
spin_lock_irqsave(&video->req_lock, flags);
list_for_each_entry(req, &video->req_free, list) {
if (req == ureq->req)
break;
}
if (req != ureq->req) {
reinit_completion(&ureq->req_done);
spin_unlock_irqrestore(&video->req_lock, flags);
ret = wait_for_completion_timeout(&ureq->req_done,
msecs_to_jiffies(500));
if (ret == 0)
uvcg_warn(&video->uvc->func,
"timed out waiting for req done\n");
return;
}
spin_unlock_irqrestore(&video->req_lock, flags);
}
#else
static inline bool uvc_using_zero_copy(struct uvc_video *video)
{
return false;
}
static inline void uvc_wait_req_complete(struct uvc_video *video, struct uvc_request *ureq)
{ }
#endif
/* --------------------------------------------------------------------------
@@ -358,9 +327,6 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
spin_lock_irqsave(&video->req_lock, flags);
list_add_tail(&req->list, &video->req_free);
#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI)
complete(&ureq->req_done);
#endif
spin_unlock_irqrestore(&video->req_lock, flags);
if (uvc->state == UVC_STATE_STREAMING)
@@ -377,7 +343,6 @@ uvc_video_free_requests(struct uvc_video *video)
sg_free_table(&video->ureq[i].sgt);
if (video->ureq[i].req) {
uvc_wait_req_complete(video, &video->ureq[i]);
usb_ep_free_request(video->ep, video->ureq[i].req);
video->ureq[i].req = NULL;
}
@@ -435,9 +400,6 @@ uvc_video_alloc_requests(struct uvc_video *video)
video->ureq[i].video = video;
video->ureq[i].last_buf = NULL;
#if defined(CONFIG_ARCH_ROCKCHIP) && defined(CONFIG_NO_GKI)
init_completion(&video->ureq[i].req_done);
#endif
list_add_tail(&video->ureq[i].req->list, &video->req_free);
/* req_size/PAGE_SIZE + 1 for overruns and + 1 for header */
sg_alloc_table(&video->ureq[i].sgt,