On Thu, Aug 03, 2023 at 05:10:49PM +0800, Linyu Yuan wrote: > when call uvc_function_bind(), gadget still have no connection speed, > just follow other gadget function, use fs endpoint descriptor to allocate > a video endpoint, remove gadget_is_{super|dual}speed() API call. > > Signed-off-by: Linyu Yuan <quic_linyyuan@xxxxxxxxxxx> > --- > v2: no change > > drivers/usb/gadget/function/f_uvc.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/usb/gadget/function/f_uvc.c b/drivers/usb/gadget/function/f_uvc.c > index 5e919fb65833..c8e149f8315f 100644 > --- a/drivers/usb/gadget/function/f_uvc.c > +++ b/drivers/usb/gadget/function/f_uvc.c > @@ -719,21 +719,13 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) > } > uvc->enable_interrupt_ep = opts->enable_interrupt_ep; > > - if (gadget_is_superspeed(c->cdev->gadget)) > - ep = usb_ep_autoconfig_ss(cdev->gadget, &uvc_ss_streaming_ep, > - &uvc_ss_streaming_comp); > - else if (gadget_is_dualspeed(cdev->gadget)) > - ep = usb_ep_autoconfig(cdev->gadget, &uvc_hs_streaming_ep); > - else > - ep = usb_ep_autoconfig(cdev->gadget, &uvc_fs_streaming_ep); > - > + ep = usb_ep_autoconfig(cdev->gadget, &uvc_fs_streaming_ep); Some UDC driver use gadget_check_config() and match_ep() to allocate EP internal fifo memory resource, if only pass download full speed EP. UDC will allocate too much internal memory to each EP. It may failure when use ss config. Generally, ss config have bigger max package size. Frank > if (!ep) { > uvcg_info(f, "Unable to allocate streaming EP\n"); > goto error; > } > uvc->video.ep = ep; > > - uvc_fs_streaming_ep.bEndpointAddress = uvc->video.ep->address; > uvc_hs_streaming_ep.bEndpointAddress = uvc->video.ep->address; > uvc_ss_streaming_ep.bEndpointAddress = uvc->video.ep->address; > > -- > 2.17.1 >