From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757611AbcBCMwR (ORCPT ); Wed, 3 Feb 2016 07:52:17 -0500 Received: from mailout2.samsung.com ([203.254.224.25]:42193 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757214AbcBCMlD (ORCPT ); Wed, 3 Feb 2016 07:41:03 -0500 X-AuditID: cbfee61a-f79266d000003652-f4-56b1f55d810b From: Robert Baldyga To: balbi@ti.com Cc: gregkh@linuxfoundation.org, andrzej.p@samsung.com, m.szyprowski@samsung.com, b.zolnierkie@samsung.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Robert Baldyga Subject: [PATCH v4 17/43] usb: gadget: composite: add usb_get_interface_id() function Date: Wed, 03 Feb 2016 13:39:25 +0100 Message-id: <1454503191-11796-18-git-send-email-r.baldyga@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1454503191-11796-1-git-send-email-r.baldyga@samsung.com> References: <1454503191-11796-1-git-send-email-r.baldyga@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGLMWRmVeSWpSXmKPExsVy+t9jQd3YrxvDDOa2m1rMetnOYrFxxnpW i4P36y2aF69ns7i8aw6bxaJlrcwWa4/cZbd4cHgnuwOHx/65a9g9+rasYvQ4fmM7k8fnTXIB LFFcNimpOZllqUX6dglcGS2Nh5kLjvNXvJl8mL2B8R9PFyMnh4SAicTEK1NZIWwxiQv31rN1 MXJxCAnMYpRo/LubBcL5ySgx++FzZpAqNgEdiS3fJzCC2CICAhLrX1xiByliFjjHKPHwThtY QlggXKLnzmQwm0VAVWLyyW8sIDavgJvExZu9zBDr5CROHpsMtJqDgxMo/vCYA0hYSMBVYlfr d8YJjLwLGBlWMUqkFiQXFCel5xrmpZbrFSfmFpfmpesl5+duYgSH1jOpHYwHd7kfYhTgYFTi 4WX4sSFMiDWxrLgy9xCjBAezkgiv0eeNYUK8KYmVValF+fFFpTmpxYcYpTlYlMR5H/9fFyYk kJ5YkpqdmlqQWgSTZeLglGpg5P+2Z1NHrP6lkm8TuTLe/WJfOumI54fNcuH6C+Zb2Xr/yEiZ 2bzA3W3nBtevX47eTNhVcSbtZq/S3APJsVq35OV0NH5dmPOhU/i1GVvQYqtf0f8Vgj8Wvfk+ YdX+Q5433XfsL+90KHS0tDnTGqN+7nTBgnVv5IPPyHDOX5Xftu3mW7O7Zr/FTimxFGckGmox FxUnAgCyLbKuKQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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