Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755258AbbLKL0Y (ORCPT ); Fri, 11 Dec 2015 06:26:24 -0500 Received: from mailout2.samsung.com ([203.254.224.25]:55782 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755145AbbLKL0S (ORCPT ); Fri, 11 Dec 2015 06:26:18 -0500 X-AuditID: cbfee61b-f793c6d00000236c-b7-566ab2d9e2af 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 v3 16/36] usb: gadget: composite: add usb_function_get_ep() function Date: Fri, 11 Dec 2015 12:24:55 +0100 Message-id: <1449833115-24065-17-git-send-email-r.baldyga@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1449833115-24065-1-git-send-email-r.baldyga@samsung.com> References: <1449833115-24065-1-git-send-email-r.baldyga@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGLMWRmVeSWpSXmKPExsVy+t9jQd2bm7LCDFZ8ULSY9bKdxWLjjPWs Fgfv11s0L17PZnF51xw2i0XLWpkt1h65y27x4PBOdgcOj/1z17B79G1Zxehx/MZ2Jo/Pm+QC WKK4bFJSczLLUov07RK4MtZ8KSr4KVQxpbuTrYHxFX8XIyeHhICJRNPt2YwQtpjEhXvr2boY uTiEBGYxSqxr/c8K4fxklDh7dj8bSBWbgI7Elu8TwDpEBAQk1r+4xA5SxCxwjlHi4Z02sISw QJjEojNT2UFsFgFViQ3vpzGB2LwCbhJ3Pn5nglgnJ3Hy2GRWEJsTKD755CVmEFtIwFXizet1 jBMYeRcwMqxilEgtSC4oTkrPNcpLLdcrTswtLs1L10vOz93ECA6tZ9I7GA/vcj/EKMDBqMTD u4AjK0yINbGsuDL3EKMEB7OSCO+vDUAh3pTEyqrUovz4otKc1OJDjNIcLErivPsuRYYJCaQn lqRmp6YWpBbBZJk4OKUaGDUrX2lL/07Z/meWorMdi+PhoPSUh1f6a+MmeEt+OpXs5SUn8MIk OP7eiSlnGu8z83yeGyV0daVkmQTX7CM3zmy5eoorpN6/2XdFqVFYyLYdtz8HsGolTzwrn7Ck 9pDd1Vt3mVWYYhqnX/53ZUf47CvfBITW90us32F1/k/RnaQt3w5P8T744YMSS3FGoqEWc1Fx IgAly9b3KQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2600 Lines: 75 Introduce function returning endpoint of given index in active altsetting of specified interface. It's intended to be used in set_alt() callback to obtain endpoints of currently selected altsetting. Signed-off-by: Robert Baldyga --- drivers/usb/gadget/composite.c | 33 +++++++++++++++++++++++++++++++++ include/linux/usb/composite.h | 2 ++ 2 files changed, 35 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index d78e63f..d7e7d0b 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -674,6 +674,39 @@ static int usb_interface_id_to_index(struct usb_function *f, u8 id) } /** + * usb_function_get_ep - obtains endpoint of given index from active + * altsetting of given interface + * @f: USB function + * @i: index of interface in given function + * @e: index of endpoint in active altsetting of given interface + * + * This function is designed to be used in set_alt() callback, when + * new altsetting is selected. It allows to obtain endpoints assigned + * to altsetting during autoconfig process. + * + * Returns pointer to endpoint on success or NULL on failure. + */ +struct usb_ep *usb_function_get_ep(struct usb_function *f, int i, int e) +{ + struct usb_composite_altset *altset; + int selected_altset; + + if (!f->descs) + return NULL; + if (i >= f->descs->intfs_num) + return NULL; + + selected_altset = f->descs->intfs[i]->cur_altset; + altset = f->descs->intfs[i]->altsets[selected_altset]; + + if (e >= altset->eps_num) + return NULL; + + return altset->eps[e]->ep; +} +EXPORT_SYMBOL_GPL(usb_function_get_ep); + +/** * usb_interface_id() - allocate an unused interface ID * @config: configuration associated with the interface * @function: function handling the interface diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 3838eb6..e12921c 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -418,6 +418,8 @@ int usb_ep_add_vendor_desc(struct usb_function *f, int i, int a, int e, struct usb_descriptor_header *desc); +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 *); int config_ep_by_speed(struct usb_gadget *g, struct usb_function *f, -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/