linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor
@ 2023-10-26 19:29 Shuzhen Wang
  2023-10-27  8:03 ` Laurent Pinchart
  2023-10-27 10:57 ` Greg KH
  0 siblings, 2 replies; 4+ messages in thread
From: Shuzhen Wang @ 2023-10-26 19:29 UTC (permalink / raw)
  To: laurent.pinchart, balbi, gregkh; +Cc: linux-usb, linux-kernel

In case the uvc gadget is super speed plus, the corresponding config
descriptor wasn't initialized. As a result, the host will not recognize
the devices when using super speed plus connection.

This patch initializes them to super speed descriptors.

Signed-off-by: Shuzhen Wang <shuzhenwang@google.com>
---
  drivers/usb/gadget/function/f_uvc.c | 14 ++++++++++++--
  1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c
index faa398109431..786379f1b7b7 100644
--- a/drivers/usb/gadget/function/f_uvc.c
+++ b/drivers/usb/gadget/function/f_uvc.c
@@ -516,6 +516,7 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
  	void *mem;
  
  	switch (speed) {
+	case USB_SPEED_SUPER_PLUS:
  	case USB_SPEED_SUPER:
  		uvc_control_desc = uvc->desc.ss_control;
  		uvc_streaming_cls = uvc->desc.ss_streaming;
@@ -564,7 +565,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
  		bytes += uvc_interrupt_ep.bLength + uvc_interrupt_cs_ep.bLength;
  		n_desc += 2;
  
-		if (speed == USB_SPEED_SUPER) {
+		if (speed == USB_SPEED_SUPER ||
+		    speed == USB_SPEED_SUPER_PLUS) {
  			bytes += uvc_ss_interrupt_comp.bLength;
  			n_desc += 1;
  		}
@@ -619,7 +621,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
  
  	if (uvc->enable_interrupt_ep) {
  		UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_ep);
-		if (speed == USB_SPEED_SUPER)
+		if (speed == USB_SPEED_SUPER ||
+		    speed == USB_SPEED_SUPER_PLUS)
  			UVC_COPY_DESCRIPTOR(mem, dst, &uvc_ss_interrupt_comp);
  
  		UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_cs_ep);
@@ -795,6 +798,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
  		goto error;
  	}
  
+	f->ssp_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER_PLUS);
+	if (IS_ERR(f->ssp_descriptors)) {
+		ret = PTR_ERR(f->ssp_descriptors);
+		f->ssp_descriptors = NULL;
+		goto error;
+	}
+
  	/* Preallocate control endpoint request. */
  	uvc->control_req = usb_ep_alloc_request(cdev->gadget->ep0, GFP_KERNEL);
  	uvc->control_buf = kmalloc(UVC_MAX_REQUEST_SIZE, GFP_KERNEL);
-- 


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor
  2023-10-26 19:29 Shuzhen Wang
@ 2023-10-27  8:03 ` Laurent Pinchart
  2023-10-27 10:57 ` Greg KH
  1 sibling, 0 replies; 4+ messages in thread
From: Laurent Pinchart @ 2023-10-27  8:03 UTC (permalink / raw)
  To: Shuzhen Wang; +Cc: balbi, gregkh, linux-usb, linux-kernel

Hi Shuzhen,

Thank you for the patch.

On Thu, Oct 26, 2023 at 12:29:02PM -0700, Shuzhen Wang wrote:
> In case the uvc gadget is super speed plus, the corresponding config
> descriptor wasn't initialized. As a result, the host will not recognize
> the devices when using super speed plus connection.
> 
> This patch initializes them to super speed descriptors.
> 
> Signed-off-by: Shuzhen Wang <shuzhenwang@google.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>   drivers/usb/gadget/function/f_uvc.c | 14 ++++++++++++--
>   1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c
> index faa398109431..786379f1b7b7 100644
> --- a/drivers/usb/gadget/function/f_uvc.c
> +++ b/drivers/usb/gadget/function/f_uvc.c
> @@ -516,6 +516,7 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
>   	void *mem;
>   
>   	switch (speed) {
> +	case USB_SPEED_SUPER_PLUS:
>   	case USB_SPEED_SUPER:
>   		uvc_control_desc = uvc->desc.ss_control;
>   		uvc_streaming_cls = uvc->desc.ss_streaming;
> @@ -564,7 +565,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
>   		bytes += uvc_interrupt_ep.bLength + uvc_interrupt_cs_ep.bLength;
>   		n_desc += 2;
>   
> -		if (speed == USB_SPEED_SUPER) {
> +		if (speed == USB_SPEED_SUPER ||
> +		    speed == USB_SPEED_SUPER_PLUS) {
>   			bytes += uvc_ss_interrupt_comp.bLength;
>   			n_desc += 1;
>   		}
> @@ -619,7 +621,8 @@ uvc_copy_descriptors(struct uvc_device *uvc, enum usb_device_speed speed)
>   
>   	if (uvc->enable_interrupt_ep) {
>   		UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_ep);
> -		if (speed == USB_SPEED_SUPER)
> +		if (speed == USB_SPEED_SUPER ||
> +		    speed == USB_SPEED_SUPER_PLUS)
>   			UVC_COPY_DESCRIPTOR(mem, dst, &uvc_ss_interrupt_comp);
>   
>   		UVC_COPY_DESCRIPTOR(mem, dst, &uvc_interrupt_cs_ep);
> @@ -795,6 +798,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
>   		goto error;
>   	}
>   
> +	f->ssp_descriptors = uvc_copy_descriptors(uvc, USB_SPEED_SUPER_PLUS);
> +	if (IS_ERR(f->ssp_descriptors)) {
> +		ret = PTR_ERR(f->ssp_descriptors);
> +		f->ssp_descriptors = NULL;
> +		goto error;
> +	}
> +
>   	/* Preallocate control endpoint request. */
>   	uvc->control_req = usb_ep_alloc_request(cdev->gadget->ep0, GFP_KERNEL);
>   	uvc->control_buf = kmalloc(UVC_MAX_REQUEST_SIZE, GFP_KERNEL);

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor
       [not found] <c2a62810-98b3-46d5-b557-2e98460729f7@google.com>
@ 2023-10-27 10:55 ` Greg KH
  0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2023-10-27 10:55 UTC (permalink / raw)
  To: Shuzhen Wang; +Cc: laurent.pinchart, balbi, linux-usb, linux-kernel

On Thu, Oct 26, 2023 at 11:31:38AM -0700, Shuzhen Wang wrote:
> In case the uvc gadget is super speed plus, the corresponding config
> descriptor wasn't initialized. As a result, the host will not recognize
> the devices when using super speed plus connection.
> 
> This patch initializes them to super speed descriptors.
> 
> Signed-off-by: Shuzhen Wang<shuzhenwang@google.com>
> ---
>  drivers/usb/gadget/function/f_uvc.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 

Hi,

This is the friendly patch-bot of Greg Kroah-Hartman.  You have sent him
a patch that has triggered this response.  He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created.  Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.

You are receiving this message because of the following common error(s)
as indicated below:

- Your patch is sent in HTML format, which for obvious reasons, does not
  work at all.  It also was rejected by the mailing list, which means
  that no one is able to refer to a public version of it on
  lore.kernel.org.

If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.

thanks,

greg k-h's patch email bot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor
  2023-10-26 19:29 Shuzhen Wang
  2023-10-27  8:03 ` Laurent Pinchart
@ 2023-10-27 10:57 ` Greg KH
  1 sibling, 0 replies; 4+ messages in thread
From: Greg KH @ 2023-10-27 10:57 UTC (permalink / raw)
  To: Shuzhen Wang; +Cc: laurent.pinchart, balbi, linux-usb, linux-kernel

On Thu, Oct 26, 2023 at 12:29:02PM -0700, Shuzhen Wang wrote:
> In case the uvc gadget is super speed plus, the corresponding config
> descriptor wasn't initialized. As a result, the host will not recognize
> the devices when using super speed plus connection.
> 
> This patch initializes them to super speed descriptors.
> 
> Signed-off-by: Shuzhen Wang <shuzhenwang@google.com>
> ---
>  drivers/usb/gadget/function/f_uvc.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)


Hi,

This is the friendly patch-bot of Greg Kroah-Hartman.  You have sent him
a patch that has triggered this response.  He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created.  Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.

You are receiving this message because of the following common error(s)
as indicated below:

- Your patch did not apply to any known trees that Greg is in control
  of.  Possibly this is because you made it against Linus's tree, not
  the linux-next tree, which is where all of the development for the
  next version of the kernel is at.  Please refresh your patch against
  the linux-next tree, or even better yet, the development tree
  specified in the MAINTAINERS file for the subsystem you are submitting
  a patch for, and resend it.

If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.

thanks,

greg k-h's patch email bot

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-10-27 10:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <c2a62810-98b3-46d5-b557-2e98460729f7@google.com>
2023-10-27 10:55 ` [PATCH] usb: gadget: uvc: Add missing initialization of ssp config descriptor Greg KH
2023-10-26 19:29 Shuzhen Wang
2023-10-27  8:03 ` Laurent Pinchart
2023-10-27 10:57 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).