From patchwork Fri May 13 10:03:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 67747 Delivered-To: patch@linaro.org Received: by 10.140.92.199 with SMTP id b65csp178956qge; Fri, 13 May 2016 03:04:21 -0700 (PDT) X-Received: by 10.98.69.132 with SMTP id n4mr21302884pfi.53.1463133857772; Fri, 13 May 2016 03:04:17 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n17si7199295pfa.46.2016.05.13.03.04.17; Fri, 13 May 2016 03:04:17 -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 S1752867AbcEMKEG (ORCPT + 29 others); Fri, 13 May 2016 06:04:06 -0400 Received: from devils.ext.ti.com ([198.47.26.153]:60561 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752795AbcEMKEC (ORCPT ); Fri, 13 May 2016 06:04:02 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by devils.ext.ti.com (8.13.7/8.13.7) with ESMTP id u4DA3nYS027268; Fri, 13 May 2016 05:03:49 -0500 Received: from DFLE72.ent.ti.com (dfle72.ent.ti.com [128.247.5.109]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id u4DA3nFl023020; Fri, 13 May 2016 05:03:49 -0500 Received: from dflp33.itg.ti.com (10.64.6.16) by DFLE72.ent.ti.com (128.247.5.109) with Microsoft SMTP Server id 14.3.294.0; Fri, 13 May 2016 05:03:48 -0500 Received: from lta0400828d.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp33.itg.ti.com (8.14.3/8.13.8) with ESMTP id u4DA3TwA017953; Fri, 13 May 2016 05:03:44 -0500 From: Roger Quadros To: CC: , , , , , , , , , , , , , , , , , Roger Quadros Subject: [PATCH v8 03/14] usb: hcd.h: Add OTG to HCD interface Date: Fri, 13 May 2016 13:03:17 +0300 Message-ID: <1463133808-10630-4-git-send-email-rogerq@ti.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1463133808-10630-1-git-send-email-rogerq@ti.com> References: <1463133808-10630-1-git-send-email-rogerq@ti.com> MIME-Version: 1.0 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 controller. 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 --- 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 b98f831..861ccaa 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -399,6 +399,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 of 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;