aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndiry Xu <andiry.xu@amd.com>2010-12-20 01:49:48 -0500
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2011-01-14 18:51:53 -0500
commit47cbf6925cd0ef8af4b8165b43a60b5f37c36d8a (patch)
tree0f8e31424b650353580532504bd41d34345240d6 /drivers
parenta6d940dd759bf240d28624198660ed34582a327b (diff)
xHCI: fix queue_trb in isoc transfer
Fix the more_trbs_coming field of queue_trb() in isoc transfer. Signed-off-by: Andiry Xu <andiry.xu@amd.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/host/xhci-ring.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 62c70c230e8..55dc1567506 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2900,6 +2900,7 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
2900 int running_total, trb_buff_len, td_len, td_remain_len, ret; 2900 int running_total, trb_buff_len, td_len, td_remain_len, ret;
2901 u64 start_addr, addr; 2901 u64 start_addr, addr;
2902 int i, j; 2902 int i, j;
2903 bool more_trbs_coming;
2903 2904
2904 ep_ring = xhci->devs[slot_id]->eps[ep_index].ring; 2905 ep_ring = xhci->devs[slot_id]->eps[ep_index].ring;
2905 2906
@@ -2965,9 +2966,11 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
2965 */ 2966 */
2966 if (j < trbs_per_td - 1) { 2967 if (j < trbs_per_td - 1) {
2967 field |= TRB_CHAIN; 2968 field |= TRB_CHAIN;
2969 more_trbs_coming = true;
2968 } else { 2970 } else {
2969 td->last_trb = ep_ring->enqueue; 2971 td->last_trb = ep_ring->enqueue;
2970 field |= TRB_IOC; 2972 field |= TRB_IOC;
2973 more_trbs_coming = false;
2971 } 2974 }
2972 2975
2973 /* Calculate TRB length */ 2976 /* Calculate TRB length */
@@ -2980,7 +2983,7 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
2980 length_field = TRB_LEN(trb_buff_len) | 2983 length_field = TRB_LEN(trb_buff_len) |
2981 remainder | 2984 remainder |
2982 TRB_INTR_TARGET(0); 2985 TRB_INTR_TARGET(0);
2983 queue_trb(xhci, ep_ring, false, false, 2986 queue_trb(xhci, ep_ring, false, more_trbs_coming,
2984 lower_32_bits(addr), 2987 lower_32_bits(addr),
2985 upper_32_bits(addr), 2988 upper_32_bits(addr),
2986 length_field, 2989 length_field,