diff mbox

[v10,03/14] usb: hcd.h: Add OTG to HCD interface

Message ID 1465564043-27163-4-git-send-email-rogerq@ti.com
State New
Headers show

Commit Message

Roger Quadros June 10, 2016, 1:07 p.m. UTC
The OTG core will use struct otg_hcd_ops to interface
with the HCD (Host Controller Driver).

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 <rogerq@ti.com>

Acked-by: Peter Chen <peter.chen@nxp.com>

---
 include/linux/usb/hcd.h | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

-- 
2.7.4

Comments

Roger Quadros June 14, 2016, 8:17 a.m. UTC | #1
+Alan

On 10/06/16 16:07, Roger Quadros wrote:
> The OTG core will use struct otg_hcd_ops to interface

> with the HCD (Host Controller Driver).

> 

> 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 <rogerq@ti.com>

> Acked-by: Peter Chen <peter.chen@nxp.com>

> ---

>  include/linux/usb/hcd.h | 24 ++++++++++++++++++++++++

>  1 file changed, 24 insertions(+)

> 

> 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;

> 


--
cheers,
-roger
diff mbox

Patch

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;