Re: [PATCH 2/3] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode

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

 



Hi Laurent,

On 18/09/18 11:35, Laurent Pinchart wrote:
> When USB requests for video data fail to be submitted, the driver
> signals a problem to the host by halting the video streaming endpoint.
> This is only valid in bulk mode, as isochronous transfers have no
> handshake phase and can't thus report a stall. The usb_ep_set_halt()
> call returns an error when using isochronous endpoints, which we happily
> ignore, but some UDCs complain in the kernel log. Fix this by only
> trying to halt the endpoint in bulk mode.
> 

Agreed,

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

Reviewed-by: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx>

> ---
>  drivers/usb/gadget/function/uvc_video.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c
> index a95c8e2364ed..2c9821ec836e 100644
> --- a/drivers/usb/gadget/function/uvc_video.c
> +++ b/drivers/usb/gadget/function/uvc_video.c
> @@ -132,7 +132,9 @@ static int uvcg_video_ep_queue(struct uvc_video *video, struct usb_request *req)
>  	ret = usb_ep_queue(video->ep, req, GFP_ATOMIC);
>  	if (ret < 0) {
>  		printk(KERN_INFO "Failed to queue request (%d).\n", ret);
> -		usb_ep_set_halt(video->ep);
> +		/* Isochronous endpoints can't be halted. */
> +		if (usb_endpoint_xfer_bulk(video->ep->desc))
> +			usb_ep_set_halt(video->ep);
>  	}
>  
>  	return ret;
> 

-- 
Regards
--
Kieran



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

  Powered by Linux