On Thu, Jan 21, 2021 at 08:01:37PM -0800, 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> > --- a/include/linux/usb/gadget.h > +++ b/include/linux/usb/gadget.h > @@ -328,6 +328,7 @@ struct usb_gadget_ops { > struct usb_ep *(*match_ep)(struct usb_gadget *, > struct usb_endpoint_descriptor *, > struct usb_ss_ep_comp_descriptor *); > + int (*check_config)(struct usb_gadget *gadget, unsigned long ep_map); > }; > > /** > @@ -607,6 +608,7 @@ int usb_gadget_connect(struct usb_gadget *gadget); > int usb_gadget_disconnect(struct usb_gadget *gadget); > int usb_gadget_deactivate(struct usb_gadget *gadget); > int usb_gadget_activate(struct usb_gadget *gadget); > +int usb_gadget_check_config(struct usb_gadget *gadget, unsigned long ep_map); > #else > static inline int usb_gadget_frame_number(struct usb_gadget *gadget) > { return 0; } Don't you also need an entry for the case where CONFIG_USB_GADGET isn't enabled? Alan Stern