summaryrefslogtreecommitdiffstats
path: root/include/linux/usb.h
diff options
context:
space:
mode:
authorFelipe Balbi <felipe.balbi@linux.intel.com>2017-12-14 09:50:39 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-15 20:45:43 +0100
commit886ee36e7205a7b850e2e5c2298a479f581f9b3b (patch)
tree0c52649fb1d4fb87550c006c000b8fb1b037da16 /include/linux/usb.h
parent66222f0d4b0ffba0bae2a6a785dc6eaa67cf532e (diff)
downloadlinux-886ee36e7205a7b850e2e5c2298a479f581f9b3b.tar.gz
linux-886ee36e7205a7b850e2e5c2298a479f581f9b3b.tar.bz2
linux-886ee36e7205a7b850e2e5c2298a479f581f9b3b.zip
usb: core: add support for USB_REQ_SET_ISOCH_DELAY
USB SS and SSP hubs provide wHubDelay values on their hub descriptor which we should inform the USB Device about. The USB Specification 3.0 explains, on section 9.4.11, how to calculate the value and how to issue the request. Note that a USB_REQ_SET_ISOCH_DELAY is valid on all device states (Default, Address, Configured), we just *chose* to issue it from Address state right after successfully fetching the USB Device Descriptor. Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/usb.h')
-rw-r--r--include/linux/usb.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index fe665a0d5bce..0173597e59aa 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -609,6 +609,10 @@ struct usb3_lpm_parameters {
* to keep track of the number of functions that require USB 3.0 Link Power
* Management to be disabled for this usb_device. This count should only
* be manipulated by those functions, with the bandwidth_mutex is held.
+ * @hub_delay: cached value consisting of:
+ * parent->hub_delay + wHubDelay + tTPTransmissionDelay (40ns)
+ *
+ * Will be used as wValue for SetIsochDelay requests.
*
* Notes:
* Usbcore drivers should not set usbdev->state directly. Instead use
@@ -689,6 +693,8 @@ struct usb_device {
struct usb3_lpm_parameters u1_params;
struct usb3_lpm_parameters u2_params;
unsigned lpm_disable_count;
+
+ u16 hub_delay;
};
#define to_usb_device(d) container_of(d, struct usb_device, dev)