| From 54b5acf3acb7a1f83ec281d111d3e2812cd7ad9d Mon Sep 17 00:00:00 2001 |
| From: Andiry Xu <andiry.xu@amd.com> |
| Date: Mon, 10 May 2010 19:57:17 -0700 |
| Subject: USB: xHCI: Fix wrong usage of macro TRB_TYPE |
| |
| From: Andiry Xu <andiry.xu@amd.com> |
| |
| commit 54b5acf3acb7a1f83ec281d111d3e2812cd7ad9d upstream. |
| |
| Macro TRB_TYPE is misused in some places. Fix the wrong usage. |
| |
| |
| Signed-off-by: Andiry Xu <andiry.xu@amd.com> |
| Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/host/xhci-ring.c | 11 +++++++---- |
| 1 file changed, 7 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/usb/host/xhci-ring.c |
| +++ b/drivers/usb/host/xhci-ring.c |
| @@ -350,7 +350,8 @@ static struct xhci_segment *find_trb_seg |
| while (cur_seg->trbs > trb || |
| &cur_seg->trbs[TRBS_PER_SEGMENT - 1] < trb) { |
| generic_trb = &cur_seg->trbs[TRBS_PER_SEGMENT - 1].generic; |
| - if (TRB_TYPE(generic_trb->field[3]) == TRB_LINK && |
| + if ((generic_trb->field[3] & TRB_TYPE_BITMASK) == |
| + TRB_TYPE(TRB_LINK) && |
| (generic_trb->field[3] & LINK_TOGGLE)) |
| *cycle_state = ~(*cycle_state) & 0x1; |
| cur_seg = cur_seg->next; |
| @@ -406,7 +407,7 @@ void xhci_find_new_dequeue_state(struct |
| BUG(); |
| |
| trb = &state->new_deq_ptr->generic; |
| - if (TRB_TYPE(trb->field[3]) == TRB_LINK && |
| + if ((trb->field[3] & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK) && |
| (trb->field[3] & LINK_TOGGLE)) |
| state->new_cycle_state = ~(state->new_cycle_state) & 0x1; |
| next_trb(xhci, ep_ring, &state->new_deq_seg, &state->new_deq_ptr); |
| @@ -1210,8 +1211,10 @@ static int handle_tx_event(struct xhci_h |
| for (cur_trb = ep_ring->dequeue, cur_seg = ep_ring->deq_seg; |
| cur_trb != event_trb; |
| next_trb(xhci, ep_ring, &cur_seg, &cur_trb)) { |
| - if (TRB_TYPE(cur_trb->generic.field[3]) != TRB_TR_NOOP && |
| - TRB_TYPE(cur_trb->generic.field[3]) != TRB_LINK) |
| + if ((cur_trb->generic.field[3] & |
| + TRB_TYPE_BITMASK) != TRB_TYPE(TRB_TR_NOOP) && |
| + (cur_trb->generic.field[3] & |
| + TRB_TYPE_BITMASK) != TRB_TYPE(TRB_LINK)) |
| td->urb->actual_length += |
| TRB_LEN(cur_trb->generic.field[2]); |
| } |