usb_interface_id(9) - phpMan
USB_INTERFACE_ID(9) Kernel Mode Gadget API USB_INTERFACE_ID(9)
usb_interface_id - allocate an unused interface ID
int usb_interface_id(struct usb_configuration * config, struct usb_function * function);
configuration associated with the interface
function handling the interface
single threaded during gadget setup
usb_interface_id is called from usb_function.bind callbacks to allocate new interface IDs.
The function driver will then store that ID in interface, association, CDC union, and
other descriptors. It will also handle any control requests targeted at that interface,
particularly changing its altsetting via set_alt. There may also be class-specific or
vendor-specific requests to handle.
All interface identifier should be allocated using this routine, to ensure that for
example different functions don't wrongly assign different meanings to the same
identifier. Note that since interface identifiers are configuration-specific, functions
used in more than one configuration (or more than once in a given configuration) need
multiple versions of the relevant descriptors.
Returns the interface ID which was allocated; or -ENODEV if no more interface IDs can be
David Brownell <dbrownell AT users.net>
Kernel Hackers Manual 4.8. January 2017 USB_INTERFACE_ID(9)