xhci: Clear the host side toggle manually when endpoint is 'soft reset'
authorMathias Nyman <mathias.nyman@linux.intel.com>
Tue, 24 Feb 2015 16:27:02 +0000 (18:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Feb 2015 16:34:32 +0000 (08:34 -0800)
commit27082e2654dc148078b0abdfc3c8e5ccbde0ebfa
treed458d88a8453e889b21e4036a4c3d4add33529e8
parent6596a926b0b6c80b730a1dd2fa91908e0a539c37
xhci: Clear the host side toggle manually when endpoint is 'soft reset'

Main benefit of this is to get xhci connected USB scanners to work.

Some devices use a clear endpoint halt request as a 'soft reset' even if
the endpoint is not halted. This will clear the toggle and sequence on the
device side. xHCI however refuses to reset a non-halted endpoint, so instead
we need to issue a configure endpoint command on xHCI to clear its host side
toggle and sequence, and get it in sync with the device side.

Tested-by: Mike Mammarella <mikem@crystalorb.net>
Cc: <stable@vger.kernel.org> # v3.18
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h