summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2016-03-22 13:41:59 -0700
committerKyle Yan <kyan@codeaurora.org>2016-07-06 15:43:00 -0700
commit350d4585e11dc47728ce050e695c14cb7e14fca9 (patch)
tree0f72ed57b4ad2d86ae69e98b15cf66fc9a93160e /include/linux
parentb27f238201b9cbe94da512a7a33b2f1959d8d8ec (diff)
usb: xhci: Add support for secondary interrupters
Implement APIs to dynamically allocate and free secondary event rings based upon interrupter number. Also add exported APIs in usb core layer which allows secondary event ring management via remote processor entity. Change-Id: I5ee7d44d6cad8e35e22d3c1a027a1eec5d208585 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/usb.h4
-rw-r--r--include/linux/usb/hcd.h6
2 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index b79925dd2b41..a2e367de268d 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -734,6 +734,10 @@ static inline bool usb_device_no_sg_constraint(struct usb_device *udev)
/* for drivers using iso endpoints */
extern int usb_get_current_frame_number(struct usb_device *usb_dev);
+extern int usb_sec_event_ring_setup(struct usb_device *dev,
+ unsigned intr_num);
+extern int usb_sec_event_ring_cleanup(struct usb_device *dev,
+ unsigned intr_num);
/* Sets up a group of bulk endpoints to support multiple stream IDs. */
extern int usb_alloc_streams(struct usb_interface *interface,
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index f89c24bd53a4..56c7fba6dcdf 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -396,6 +396,8 @@ struct hc_driver {
/* Call for power on/off the port if necessary */
int (*port_power)(struct usb_hcd *hcd, int portnum, bool enable);
+ int (*sec_event_ring_setup)(struct usb_hcd *hcd, unsigned intr_num);
+ int (*sec_event_ring_cleanup)(struct usb_hcd *hcd, unsigned intr_num);
};
static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
@@ -434,6 +436,10 @@ extern int usb_hcd_alloc_bandwidth(struct usb_device *udev,
struct usb_host_interface *old_alt,
struct usb_host_interface *new_alt);
extern int usb_hcd_get_frame_number(struct usb_device *udev);
+extern int usb_hcd_sec_event_ring_setup(struct usb_device *udev,
+ unsigned intr_num);
+extern int usb_hcd_sec_event_ring_cleanup(struct usb_device *udev,
+ unsigned intr_num);
extern struct usb_hcd *usb_create_hcd(const struct hc_driver *driver,
struct device *dev, const char *bus_name);