On 7/1/2021 10:00 PM, Greg KH wrote: > On Wed, Jun 30, 2021 at 02:00:38AM -0700, Wesley Cheng wrote: >> Some UDCs may have constraints on how many high bandwidth endpoints it can >> support in a certain configuration. This API allows for the composite >> driver to pass down the total number of endpoints to the UDC so it can verify >> it has the required resources to support the configuration. >> >> Signed-off-by: Wesley Cheng <wcheng@xxxxxxxxxxxxxx> >> --- >> drivers/usb/gadget/udc/core.c | 25 +++++++++++++++++++++++++ >> include/linux/usb/gadget.h | 4 ++++ >> 2 files changed, 29 insertions(+) >> >> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c >> index b7f0b1e..f1f44a6 100644 >> --- a/drivers/usb/gadget/udc/core.c >> +++ b/drivers/usb/gadget/udc/core.c >> @@ -1003,6 +1003,31 @@ int usb_gadget_ep_match_desc(struct usb_gadget *gadget, >> } >> EXPORT_SYMBOL_GPL(usb_gadget_ep_match_desc); >> >> +/** >> + * usb_gadget_check_config - checks if the UDC can support the number of eps Hi Greg, Thanks for the feedback. > > "eps"? What is that? > Fixed to "endpoints" >> + * @gadget: controller to check the USB configuration >> + * @ep_map: bitmap of endpoints being requested by a USB configuration > > There is no such option in this function, did you run 'make htmldocs' > and see that this adds a warning? > Removed the ep_map comment, as we've removed it from the arguments. >> + * >> + * Ensure that a UDC is able to support the number of endpoints within a USB >> + * configuration, and that there are no resource limitations to support all >> + * requested eps. >> + * >> + * Returns zero on success, else a negative errno. >> + */ >> +int usb_gadget_check_config(struct usb_gadget *gadget) >> +{ >> + int ret = 0; >> + >> + if (!gadget->ops->check_config) >> + goto out; >> + >> + ret = gadget->ops->check_config(gadget); >> + >> +out: >> + return ret; >> +} >> +EXPORT_SYMBOL_GPL(usb_gadget_check_config); > > This can be written in the much simpler form: > { > if (gadget->ops->check_config) > return gadget->ops->check_config(gadget); > return 0; > } > thanks for this suggestion. > But where are the endpoints that need to be checked??? > > How is this working? > The USB gadget will have ep_list, do we'll be looping through the endpoints that have been claimed to get the number of IN eps being used by a particular configuration. Thanks Wesley Cheng -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project