aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/xhci-ring.c
diff options
context:
space:
mode:
authorAlex He <alex.he@amd.com>2011-06-08 06:34:06 -0400
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2011-06-17 14:28:08 -0400
commitf6ba6fe2d913da6707a71a413d6ec8ae98d6ce18 (patch)
tree2da2e6bc2b35659e5372825ecfd575ffad70ca5e /drivers/usb/host/xhci-ring.c
parente1cf486d881d853d710e2d86a7adfc5fd260990f (diff)
xHCI 1.0: Incompatible Device Error
It is one new TRB Completion Code for the xHCI spec v1.0. Asserted if the xHC detects a problem with a device that does not allow it to be successfully accessed, e.g. due to a device compliance or compatibility problem. This error may be returned by any command or transfer, and is fatal as far as the Slot is concerned. Return -EPROTO by urb->status or frame->status of ISOC for transfer case. And return -ENODEV for configure endpoint command, evaluate context command and address device command if there is an incompatible Device Error. The error codes will be sent back to the USB core to decide how to do. It's unnecessary for other commands because after the three commands run successfully means that the device has been accepted. Signed-off-by: Alex He <alex.he@amd.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers/usb/host/xhci-ring.c')
-rw-r--r--drivers/usb/host/xhci-ring.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 0c008497edfd..436332aa341b 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1733,6 +1733,7 @@ static int process_isoc_td(struct xhci_hcd *xhci, struct xhci_td *td,
1733 frame->status = -EOVERFLOW; 1733 frame->status = -EOVERFLOW;
1734 skip_td = true; 1734 skip_td = true;
1735 break; 1735 break;
1736 case COMP_DEV_ERR:
1736 case COMP_STALL: 1737 case COMP_STALL:
1737 frame->status = -EPROTO; 1738 frame->status = -EPROTO;
1738 skip_td = true; 1739 skip_td = true;
@@ -2016,6 +2017,10 @@ static int handle_tx_event(struct xhci_hcd *xhci,
2016 TRB_TO_SLOT_ID(le32_to_cpu(event->flags)), 2017 TRB_TO_SLOT_ID(le32_to_cpu(event->flags)),
2017 ep_index); 2018 ep_index);
2018 goto cleanup; 2019 goto cleanup;
2020 case COMP_DEV_ERR:
2021 xhci_warn(xhci, "WARN: detect an incompatible device");
2022 status = -EPROTO;
2023 break;
2019 case COMP_MISSED_INT: 2024 case COMP_MISSED_INT:
2020 /* 2025 /*
2021 * When encounter missed service error, one or more isoc tds 2026 * When encounter missed service error, one or more isoc tds