xhci-hcd: support soft retry on SS transfer error
authorJC Kuo <jckuo@nvidia.com>
Sun, 20 Dec 2015 06:37:02 +0000 (14:37 +0800)
committermobile promotions <svcmobile_promotions@nvidia.com>
Sat, 16 Jul 2016 01:10:35 +0000 (18:10 -0700)
commitdd1580c6f009a1638a9a85c5669d6a5800eacebd
treec25f63664933b241e2314adcc7ba5e590a645022
parente5f1b7dfb1508010d30245c90c51810bef3c6ede
xhci-hcd: support soft retry on SS transfer error

This commit implements XHCI "soft retry" for SuperSpeed endpoints which
encounters transfer errors.
When transfer error happens on an SuperSpeed endpoint, XHCI driver will
1. queue a "reset endpoint" command with TSP=1 (Transfer State Preserve)

2. invoke a HCD driver specific callback "->endpoint_soft_retry()" to let
HCD driver has a chance to configure its hardware

3. ring door bell for the endpoint upon seeing the command completion

bug 200162414

Change-Id: I19df13614f794437c7f4d4369dbdaed13e1da85a
Signed-off-by: JC Kuo <jckuo@nvidia.com>
Reviewed-on: http://git-master/r/1169995
GVS: Gerrit_Virtual_Submit
Reviewed-by: ChihMin Cheng <ccheng@nvidia.com>
Tested-by: Mark Kuo <mkuo@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.h
include/linux/usb/hcd.h