aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorMathias Nyman <mathias.nyman@linux.intel.com>2015-09-21 10:46:16 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-09-22 01:50:44 -0400
commitdca7794539eff04b786fb6907186989e5eaaa9c2 (patch)
tree6b6d52bd189d6585642ca669128fa4f62ee60f86 /drivers/usb/host
parent448116bfa856d3c076fa7178ed96661a008a5d45 (diff)
xhci: change xhci 1.0 only restrictions to support xhci 1.1
Some changes between xhci 0.96 and xhci 1.0 specifications forced us to check the hci version in code, some of these checks were implemented as hci_version == 1.0, which will not work with new xhci 1.1 controllers. xhci 1.1 behaves similar to xhci 1.0 in these cases, so change these checks to hci_version >= 1.0 Cc: <stable@vger.kernel.org> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/xhci-mem.c6
-rw-r--r--drivers/usb/host/xhci-ring.c4
2 files changed, 5 insertions, 5 deletions
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 9a8c936cd42c..8497fb8f6193 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1498,10 +1498,10 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
1498 * use Event Data TRBs, and we don't chain in a link TRB on short 1498 * use Event Data TRBs, and we don't chain in a link TRB on short
1499 * transfers, we're basically dividing by 1. 1499 * transfers, we're basically dividing by 1.
1500 * 1500 *
1501 * xHCI 1.0 specification indicates that the Average TRB Length should 1501 * xHCI 1.0 and 1.1 specification indicates that the Average TRB Length
1502 * be set to 8 for control endpoints. 1502 * should be set to 8 for control endpoints.
1503 */ 1503 */
1504 if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version == 0x100) 1504 if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version >= 0x100)
1505 ep_ctx->tx_info |= cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(8)); 1505 ep_ctx->tx_info |= cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(8));
1506 else 1506 else
1507 ep_ctx->tx_info |= 1507 ep_ctx->tx_info |=
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 1c61e5e597a8..43291f93afeb 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -3470,8 +3470,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
3470 if (start_cycle == 0) 3470 if (start_cycle == 0)
3471 field |= 0x1; 3471 field |= 0x1;
3472 3472
3473 /* xHCI 1.0 6.4.1.2.1: Transfer Type field */ 3473 /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
3474 if (xhci->hci_version == 0x100) { 3474 if (xhci->hci_version >= 0x100) {
3475 if (urb->transfer_buffer_length > 0) { 3475 if (urb->transfer_buffer_length > 0) {
3476 if (setup->bRequestType & USB_DIR_IN) 3476 if (setup->bRequestType & USB_DIR_IN)
3477 field |= TRB_TX_TYPE(TRB_DATA_IN); 3477 field |= TRB_TX_TYPE(TRB_DATA_IN);