• Sarah Sharp's avatar
    xhci: Fix encoding for HS bulk/control NAK rate. · 340a3504
    Sarah Sharp authored
    The xHCI 0.96 spec says that HS bulk and control endpoint NAK rate must
    be encoded as an exponent of two number of microframes.  The endpoint
    descriptor has the NAK rate encoded in number of microframes.  We were
    just copying the value from the endpoint descriptor into the endpoint
    context interval field, which was not correct.  This lead to the VIA
    host rejecting the add of a bulk OUT endpoint from any USB 2.0 mass
    storage device.
    
    The fix is to use the correct encoding.  Refactor the code to convert
    number of frames to an exponential number of microframes, and make sure
    we convert the number of microframes in HS bulk and control endpoints to
    an exponent.
    
    This should be back ported to kernels as old as 2.6.31, that contain the
    commit dfa49c4a "USB: xhci - fix math
    in xhci_get_endpoint_interval"
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Tested-by: default avatarFelipe Contreras <felipe.contreras@gmail.com>
    Suggested-by: default avatarAndiry Xu <andiry.xu@amd.com>
    Cc: stable@vger.kernel.org
    340a3504
xhci-mem.c 70.7 KB