• Sarah Sharp's avatar
    USB: Enable Latency Tolerance Messaging (LTM). · f74631e3
    Sarah Sharp authored
    USB 3.0 devices may optionally support a new feature called Latency
    Tolerance Messaging.  If both the xHCI host controller and the device
    support LTM, it should be turned on in order to give the system hardware
    a better clue about the latency tolerance values of its PCI devices.
    
    Once a Set Feature request to enable LTM is received, the USB 3.0 device
    will begin to send LTM updates as its buffers fill or empty, and it can
    tolerate more or less latency.
    
    The USB 3.0 spec, section C.4.2 says that LTM should be disabled just
    before the device is placed into suspend.  Then the device will send an
    updated LTM notification, so that the system doesn't think it should
    remain in an active state in order to satisfy the latency requirements
    of the suspended device.
    
    The Set and Clear Feature LTM enable command can only be sent to a
    configured device.  The device will respond with an error if that
    command is sent while it is in the Default or Addressed state.  Make
    sure to check udev->actconfig in usb_enable_ltm() and usb_disable_ltm(),
    and don't send those commands when the device is unconfigured.
    
    LTM should be enabled once a new configuration is installed in
    usb_set_configuration().  If we end up sending duplicate Set Feature LTM
    Enable commands on a switch from one installed configuration to another
    configuration, that should be harmless.
    
    Make sure that LTM is disabled before the device is unconfigured in
    usb_disable_device().  If no drivers are bound to the device, it doesn't
    make sense to allow the device to control the latency tolerance of the
    xHCI host controller.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    f74631e3
message.c 60.3 KB