From patchwork Thu Jun 9 07:51:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 69697 Delivered-To: patch@linaro.org Received: by 10.140.106.246 with SMTP id e109csp194384qgf; Thu, 9 Jun 2016 00:52:35 -0700 (PDT) X-Received: by 10.36.79.150 with SMTP id c144mr20002949itb.2.1465458754977; Thu, 09 Jun 2016 00:52:34 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j63si6291736pfc.181.2016.06.09.00.52.34; Thu, 09 Jun 2016 00:52:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755483AbcFIHwc (ORCPT + 30 others); Thu, 9 Jun 2016 03:52:32 -0400 Received: from arroyo.ext.ti.com ([198.47.19.12]:43392 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751743AbcFIHw2 (ORCPT ); Thu, 9 Jun 2016 03:52:28 -0400 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id u597pHTi019396; Thu, 9 Jun 2016 02:51:17 -0500 Received: from DLEE71.ent.ti.com (dlee71.ent.ti.com [157.170.170.114]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id u597pHRp020883; Thu, 9 Jun 2016 02:51:17 -0500 Received: from dlep33.itg.ti.com (157.170.170.75) by DLEE71.ent.ti.com (157.170.170.114) with Microsoft SMTP Server id 14.3.294.0; Thu, 9 Jun 2016 02:51:16 -0500 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep33.itg.ti.com (8.14.3/8.13.8) with ESMTP id u597pBkq032338; Thu, 9 Jun 2016 02:51:12 -0500 Subject: [PATCH v10 03/14] usb: hcd.h: Add OTG to HCD interface To: , References: <1465376626-30122-1-git-send-email-rogerq@ti.com> <1465376626-30122-4-git-send-email-rogerq@ti.com> CC: , , , , , , , , , , , , , , , , From: Roger Quadros Message-ID: <57591FEF.4010507@ti.com> Date: Thu, 9 Jun 2016 10:51:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <1465376626-30122-4-git-send-email-rogerq@ti.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The OTG core will use struct otg_hcd_ops to interface with the HCD (Host Controller Device). The main purpose of this interface is to avoid directly calling HCD APIs from the OTG core as they wouldn't be defined in the built-in symbol table if CONFIG_USB is m. Signed-off-by: Roger Quadros Acked-by: Peter Chen --- v10: - clarify HCD abbreviation in commit message. - Fix comment - remove unnecessary "of" in comment - use URB instead of urb. include/linux/usb/hcd.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) -- 2.7.4 diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 66fc137..7729c1f 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -400,6 +400,30 @@ struct hc_driver { }; +/** + * struct otg_hcd_ops - Interface between OTG core and HCD + * + * Provided by the HCD core to allow the OTG core to interface with the HCD + * + * @add: function to add the HCD + * @remove: function to remove the HCD + * @usb_bus_start_enum: function to immediately start bus enumeration + * @usb_control_msg: function to build and send a control URB + * @usb_hub_find_child: function to get pointer to the child device + */ +struct otg_hcd_ops { + int (*add)(struct usb_hcd *hcd, + unsigned int irqnum, unsigned long irqflags); + void (*remove)(struct usb_hcd *hcd); + int (*usb_bus_start_enum)(struct usb_bus *bus, unsigned int port_num); + int (*usb_control_msg)(struct usb_device *dev, unsigned int pipe, + __u8 request, __u8 requesttype, __u16 value, + __u16 index, void *data, __u16 size, + int timeout); + struct usb_device * (*usb_hub_find_child)(struct usb_device *hdev, + int port1); +}; + static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd) { return hcd->driver->flags & HCD_BH;