]> git.baikalelectronics.ru Git - kernel.git/commit
USB: xhci - fix interval calculation for FS isoc endpoints
authorDmitry Torokhov <dtor@vmware.com>
Tue, 31 May 2011 21:37:23 +0000 (14:37 -0700)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Mon, 6 Jun 2011 04:01:38 +0000 (21:01 -0700)
commitf3180b969b43dd6cfec48d35f372892f6e473afd
treec3dbfa073f8cd9ac9636b563a58aef2a58209df8
parent4228a856b33837960b1a57d92777e4c29ca44f27
USB: xhci - fix interval calculation for FS isoc endpoints

Full-speed isoc endpoints specify interval in exponent based form in
frames, not microframes, so we need to adjust accordingly.

NEC xHCI host controllers will return an error code of 0x11 if a full
speed isochronous endpoint is added with the Interval field set to
something less than 3 (2^3 = 8 microframes, or one frame).  It is
impossible for a full speed device to have an interval smaller than one
frame.

This was always an issue in the xHCI driver, but commit
9e0580a0fa58f79676c6e577cd853ecbac6fb547 "USB: xhci - fix math in
xhci_get_endpoint_interval()" removed the clamping of the minimum value
in the Interval field, which revealed this bug.

This needs to be backported to stable kernels back to 2.6.31.

Reported-by: Matt Evans <matt@ozlabs.org>
Signed-off-by: Dmitry Torokhov <dtor@vmware.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable@kernel.org
drivers/usb/host/xhci-mem.c