aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorAndiry Xu <andiry.xu@amd.com>2011-05-05 06:13:58 -0400
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2011-05-09 12:34:47 -0400
commit51eb01a746089f2c3d9b87f870353772d2fb4c37 (patch)
treee844a557ef8f1f841969dabe1b88ee9429786079 /drivers/usb/host
parentb83cdc8f4d94a127e9319bef37f384b01ecca72e (diff)
xHCI 1.0: Control endpoint average TRB length field set
xHCI 1.0 specification indicates that software should set Average TRB Length to '8' for control endpoints. Signed-off-by: Andiry Xu <andiry.xu@amd.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/xhci-mem.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index a4fc4d929385..543833b9dbad 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1246,8 +1246,15 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
1246 * including link TRBs, No-op TRBs, and Event data TRBs. Since we don't 1246 * including link TRBs, No-op TRBs, and Event data TRBs. Since we don't
1247 * use Event Data TRBs, and we don't chain in a link TRB on short 1247 * use Event Data TRBs, and we don't chain in a link TRB on short
1248 * transfers, we're basically dividing by 1. 1248 * transfers, we're basically dividing by 1.
1249 *
1250 * xHCI 1.0 specification indicates that the Average TRB Length should
1251 * be set to 8 for control endpoints.
1249 */ 1252 */
1250 ep_ctx->tx_info |= cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(max_esit_payload)); 1253 if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version == 0x100)
1254 ep_ctx->tx_info |= cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(8));
1255 else
1256 ep_ctx->tx_info |=
1257 cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(max_esit_payload));
1251 1258
1252 /* FIXME Debug endpoint context */ 1259 /* FIXME Debug endpoint context */
1253 return 0; 1260 return 0;