From 3b07017b9635f7ee02abad8db3d7404bf00b013f Mon Sep 17 00:00:00 2001 From: William Wu Date: Fri, 7 May 2021 11:30:58 +0800 Subject: [PATCH] usb: gadget: f_uvc: fix the superspeed ep companion descriptor As per USB 3.1 spec "Table 9-26. SuperSpeed Endpoint Companion Descriptor", the wBytesPerInterval must be set to zero for bulk endpoints. Change-Id: I2ec14ac0b0db1f4b5dc3bdbb61e3d2c02c63da23 Signed-off-by: William Wu --- drivers/usb/gadget/function/f_uvc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c index a67da1b87c90..43a8679a8a29 100644 --- a/drivers/usb/gadget/function/f_uvc.c +++ b/drivers/usb/gadget/function/f_uvc.c @@ -858,9 +858,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) uvc_ss_bulk_streaming_ep.wMaxPacketSize = cpu_to_le16(max_packet_size); - uvc_ss_streaming_comp.bMaxBurst = opts->streaming_maxburst; - uvc_ss_streaming_comp.wBytesPerInterval = - cpu_to_le16(max_packet_size * opts->streaming_maxburst); + uvc_ss_bulk_streaming_comp.bMaxBurst = opts->streaming_maxburst; + /* + * As per USB 3.1 spec "Table 9-26. SuperSpeed Endpoint + * Companion Descriptor", the wBytesPerInterval must be + * set to zero for bulk endpoints. + */ + uvc_ss_bulk_streaming_comp.wBytesPerInterval = 0; } /* Allocate endpoints. */