• Mathias Nyman's avatar
    usb: Increase root hub reset signaling time to prevent retry · 74072bae
    Mathias Nyman authored
    Save 80ms device enumeration time by increasing root hub port reset time
    
    The 50ms reset signaling time is not enough for most root hub ports.
    Increasing the reset time to 60ms allows host controllers to finish port
    reset and removes a retry causing an extra 50ms delay.
    
    The USB 2 specification requires "at least 50ms" for driving root
    port reset. The current msleep is exactly 50ms which may not be
    enough if there are any delays between writing the reset bit to host
    controller portsc register and phy actually driving reset.
    
    On Haswell, Skylake and Kabylake xHC port reset took in average 52-59ms
    
    The 80ms improvement comes from (40ms * 2 port resets) save at enumeration
    for each device connected to a root hub port.
    
    more details about root port reset in USB2 section 7.1.7.5:.
    "Software must ensure that resets issued to the root ports drive reset
    long enough to overwhelm any concurrent resume attempts by downstream
    devices. It is required that resets from root ports have a duration of
    at least 50 ms (TDRSTR).
    Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    74072bae
hub.c 166 KB