diff options
author | Felipe Balbi <felipe.balbi@linux.intel.com> | 2017-12-14 09:50:39 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-12-15 20:45:43 +0100 |
commit | 886ee36e7205a7b850e2e5c2298a479f581f9b3b (patch) | |
tree | 0c52649fb1d4fb87550c006c000b8fb1b037da16 /include/linux/usb.h | |
parent | 66222f0d4b0ffba0bae2a6a785dc6eaa67cf532e (diff) | |
download | linux-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.h | 6 |
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) |