diff options
author | Andiry Xu <andiry.xu@amd.com> | 2010-12-20 01:49:48 -0500 |
---|---|---|
committer | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2011-01-14 18:51:53 -0500 |
commit | 47cbf6925cd0ef8af4b8165b43a60b5f37c36d8a (patch) | |
tree | 0f8e31424b650353580532504bd41d34345240d6 /drivers/usb | |
parent | a6d940dd759bf240d28624198660ed34582a327b (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/usb')
-rw-r--r-- | drivers/usb/host/xhci-ring.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 62c70c230e83..55dc15675068 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, |