Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754660AbbGaOGW (ORCPT ); Fri, 31 Jul 2015 10:06:22 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:35468 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751873AbbGaOGS (ORCPT ); Fri, 31 Jul 2015 10:06:18 -0400 X-AuditID: cbfee61a-f79a06d000005c6f-c9-55bb80d827c0 From: Robert Baldyga To: balbi@ti.com Cc: gregkh@linuxfoundation.org, Peter.Chen@freescale.com, johnyoun@synopsys.com, dahlmann.thomas@arcor.de, nicolas.ferre@atmel.com, cernekee@gmail.com, leoli@freescale.com, daniel@zonque.org, haojian.zhuang@gmail.com, robert.jarzmik@free.fr, michal.simek@xilinx.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, linux-geode@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, andrzej.p@samsung.com, m.szyprowski@samsung.com, stern@rowland.harvard.edu, petr.cvek@tul.cz, Robert Baldyga Subject: [PATCH v5 41/46] usb: gadget: add 'ep_match' callback to usb_gadget_ops Date: Fri, 31 Jul 2015 16:00:53 +0200 Message-id: <1438351258-31578-42-git-send-email-r.baldyga@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1438351258-31578-1-git-send-email-r.baldyga@samsung.com> References: <1438351258-31578-1-git-send-email-r.baldyga@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRXUxSYRzGfTkHzpFJndDyzJYrKlvOKFdbb8ulrVVvF23eUNnaCvUofqCM o5RepNM1i1awnGV+5GdfzMTERoLoFEdLIpm0ZheghatsztXIRAwqcN09/9/z7Hku/iQmbMUT yIKSMkZZIi0W8fi4PeSl9nyoNkv2mYMkbJqvw+HoTBW0tLsBvDFjxWBN8BsOh94ECFjbpedB Z+9BaLZPARiYFcJ+73su1Ly149BlauHB5m4NDjsfXcPg6nKIC5+Nuwm4OH8O/nLVEtDWHOTA tusNXDhrHSRg00Is1K46eRk0qp97zkHtgRc48gxbcaTp9XFRyKrhoMEmN4FGWnsIZOiuQpON HQA1u/0A3R7QATQw4gPo1bSRg+4/vcVDvv5EZPGt4pkbzvPTcpniAhWj3HvkEl/WY1RzFdMx V6b72jjVwMJXg2iSpg7Qiwuf8DW9iXZ69Dw14JNC6iGgHcEWYu1YAfRKwwg3nOJRKfTAshaE dRxF0fqvU5EQRvlx2vHgJhE2YqlMWusyY2pAkji1kzbeKQpjAXWC/miaI9bWEunXtvpIZ/Q/ vqR3RLiQOk6P2yYwLRC0gygdoBlFjoLNzpenljCXxaxUzpaX5ItzSuX9IPK0zwkvwajp5Big SCCKEVBdJomQK1WxFfIxQJOYKE4wk2SWCAW50opKRll6UVlezLBjYDOJi+IFW/oMEiGVLy1j ihhGwSj/uxwyOqEaSNSNuhrSKobb2LuSDvXWo6edDk/WLs/+5JQzGUmFVjun8oLY22B7zCx/ yRtGO35avN+j1YfrHbKQS+dKn+z0xTsLs7My5/0GY6th+8TVPOzYbsufRLb1VMuPpELvvSWn TKLamFazfvas0vNONkSNr3sSKPCr6g6lF0Xl/hbhrEyamowpWelfcPmBcbACAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1820 Lines: 54 Add callback that is called by epautoconf to allow UDC driver match the best endpoint for specific descriptor. It's intended to supply mechanism which allows to get rid of chip-specific endpoint matching code from epautoconf. If gadget has set 'ep_match' callback we prefer to call it first, and if it fails to find matching endpoint, then we try to use default matching algorithm. Signed-off-by: Robert Baldyga --- drivers/usb/gadget/epautoconf.c | 6 ++++++ include/linux/usb/gadget.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c index 4fa6f5d..1b1fee0 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -165,6 +165,12 @@ struct usb_ep *usb_ep_autoconfig_ss( type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; + if (gadget->ops->match_ep) { + ep = gadget->ops->match_ep(gadget, desc, ep_comp); + if (ep) + goto found_ep; + } + /* First, apply chip-specific "best usage" knowledge. * This might make a good usb_gadget_ops hook ... */ diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 82b5bcb..303214b 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -534,6 +534,9 @@ struct usb_gadget_ops { int (*udc_start)(struct usb_gadget *, struct usb_gadget_driver *); int (*udc_stop)(struct usb_gadget *); + struct usb_ep *(*match_ep)(struct usb_gadget *, + struct usb_endpoint_descriptor *, + struct usb_ss_ep_comp_descriptor *); }; /** -- 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/