Introduce function returning id of interface at given index in function. The id value is equal bInterfaceNumber field in interface descriptor. This value can be useful during preparation of class or vendor specific descriptors in prep_vendor_descs() callback. It can be also necessary to handle some class or vendor specific setup requests. Signed-off-by: Robert Baldyga <r.baldyga@xxxxxxxxxxx> --- drivers/usb/gadget/composite.c | 19 +++++++++++++++++++ include/linux/usb/composite.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 452294e..7e3721d 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -670,6 +670,25 @@ static int usb_interface_id_to_index(struct usb_function *f, u8 id) } /** + * usb_get_interface_id - get id number of interface at given index in + * USB function + * @f: USB function + * @i: index of interface in function + * + * Returns interface id on success, else negative errno. + */ +int usb_get_interface_id(struct usb_function *f, int i) +{ + if (!f->descs) + return -ENODEV; + if (f->descs->intfs_num <= i) + return -ENODEV; + + return f->descs->intfs[i]->id; +} +EXPORT_SYMBOL_GPL(usb_get_interface_id); + +/** * usb_function_get_ep - obtains endpoint of given index from active * altsetting of given interface * @f: USB function diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 2e646e3..b2fb260 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -425,6 +425,8 @@ int usb_ep_add_vendor_desc(struct usb_function *f, int i, int a, int e, const struct usb_descriptor_header *desc); +int usb_get_interface_id(struct usb_function *f, int i); + struct usb_ep *usb_function_get_ep(struct usb_function *f, int intf, int ep); int usb_interface_id(struct usb_configuration *, struct usb_function *); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html