diff options
author | Olof Johansson <olof@lixom.net> | 2011-12-16 01:02:34 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2011-12-16 01:02:34 -0500 |
commit | 02735a29d8ce882ec698803f064e17888874780c (patch) | |
tree | 6a4afa3bc8b6d4334df24910a56f77adf126b0c7 /drivers/usb/host | |
parent | 8d685b7f4d9c9882442bf1b492558d5f17b694fa (diff) | |
parent | 3d911ad22e8405c1a333a6812e405cb1a5ae9829 (diff) |
Merge branch 'at91/defconfig' into next/cleanup
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/ehci-sched.c | 9 | ||||
-rw-r--r-- | drivers/usb/host/whci/qset.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/xhci.c | 5 |
3 files changed, 10 insertions, 6 deletions
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 56a32033adb3..a60679cbbf85 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
@@ -1475,6 +1475,7 @@ iso_stream_schedule ( | |||
1475 | * jump until after the queue is primed. | 1475 | * jump until after the queue is primed. |
1476 | */ | 1476 | */ |
1477 | else { | 1477 | else { |
1478 | int done = 0; | ||
1478 | start = SCHEDULE_SLOP + (now & ~0x07); | 1479 | start = SCHEDULE_SLOP + (now & ~0x07); |
1479 | 1480 | ||
1480 | /* NOTE: assumes URB_ISO_ASAP, to limit complexity/bugs */ | 1481 | /* NOTE: assumes URB_ISO_ASAP, to limit complexity/bugs */ |
@@ -1492,18 +1493,18 @@ iso_stream_schedule ( | |||
1492 | if (stream->highspeed) { | 1493 | if (stream->highspeed) { |
1493 | if (itd_slot_ok(ehci, mod, start, | 1494 | if (itd_slot_ok(ehci, mod, start, |
1494 | stream->usecs, period)) | 1495 | stream->usecs, period)) |
1495 | break; | 1496 | done = 1; |
1496 | } else { | 1497 | } else { |
1497 | if ((start % 8) >= 6) | 1498 | if ((start % 8) >= 6) |
1498 | continue; | 1499 | continue; |
1499 | if (sitd_slot_ok(ehci, mod, stream, | 1500 | if (sitd_slot_ok(ehci, mod, stream, |
1500 | start, sched, period)) | 1501 | start, sched, period)) |
1501 | break; | 1502 | done = 1; |
1502 | } | 1503 | } |
1503 | } while (start > next); | 1504 | } while (start > next && !done); |
1504 | 1505 | ||
1505 | /* no room in the schedule */ | 1506 | /* no room in the schedule */ |
1506 | if (start == next) { | 1507 | if (!done) { |
1507 | ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n", | 1508 | ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n", |
1508 | urb, now, now + mod); | 1509 | urb, now, now + mod); |
1509 | status = -ENOSPC; | 1510 | status = -ENOSPC; |
diff --git a/drivers/usb/host/whci/qset.c b/drivers/usb/host/whci/qset.c index d6e175428618..a403b53e86b9 100644 --- a/drivers/usb/host/whci/qset.c +++ b/drivers/usb/host/whci/qset.c | |||
@@ -124,7 +124,7 @@ void qset_clear(struct whc *whc, struct whc_qset *qset) | |||
124 | { | 124 | { |
125 | qset->td_start = qset->td_end = qset->ntds = 0; | 125 | qset->td_start = qset->td_end = qset->ntds = 0; |
126 | 126 | ||
127 | qset->qh.link = cpu_to_le32(QH_LINK_NTDS(8) | QH_LINK_T); | 127 | qset->qh.link = cpu_to_le64(QH_LINK_NTDS(8) | QH_LINK_T); |
128 | qset->qh.status = qset->qh.status & QH_STATUS_SEQ_MASK; | 128 | qset->qh.status = qset->qh.status & QH_STATUS_SEQ_MASK; |
129 | qset->qh.err_count = 0; | 129 | qset->qh.err_count = 0; |
130 | qset->qh.scratch[0] = 0; | 130 | qset->qh.scratch[0] = 0; |
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index aa94c0195791..a1afb7c39f7e 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c | |||
@@ -711,7 +711,10 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) | |||
711 | ring = xhci->cmd_ring; | 711 | ring = xhci->cmd_ring; |
712 | seg = ring->deq_seg; | 712 | seg = ring->deq_seg; |
713 | do { | 713 | do { |
714 | memset(seg->trbs, 0, SEGMENT_SIZE); | 714 | memset(seg->trbs, 0, |
715 | sizeof(union xhci_trb) * (TRBS_PER_SEGMENT - 1)); | ||
716 | seg->trbs[TRBS_PER_SEGMENT - 1].link.control &= | ||
717 | cpu_to_le32(~TRB_CYCLE); | ||
715 | seg = seg->next; | 718 | seg = seg->next; |
716 | } while (seg != ring->deq_seg); | 719 | } while (seg != ring->deq_seg); |
717 | 720 | ||