USB: revert periodic scheduling bugfix
[pandora-kernel.git] / drivers / usb / host / ehci-sched.c
index 56a3203..34655d0 100644 (file)
@@ -1475,6 +1475,7 @@ iso_stream_schedule (
         * jump until after the queue is primed.
         */
        else {
+               int done = 0;
                start = SCHEDULE_SLOP + (now & ~0x07);
 
                /* NOTE:  assumes URB_ISO_ASAP, to limit complexity/bugs */
@@ -1492,18 +1493,18 @@ iso_stream_schedule (
                        if (stream->highspeed) {
                                if (itd_slot_ok(ehci, mod, start,
                                                stream->usecs, period))
-                                       break;
+                                       done = 1;
                        } else {
                                if ((start % 8) >= 6)
                                        continue;
                                if (sitd_slot_ok(ehci, mod, stream,
                                                start, sched, period))
-                                       break;
+                                       done = 1;
                        }
-               } while (start > next);
+               } while (start > next && !done);
 
                /* no room in the schedule */
-               if (start == next) {
+               if (!done) {
                        ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n",
                                urb, now, now + mod);
                        status = -ENOSPC;
@@ -1683,7 +1684,7 @@ itd_link_urb (
 
        /* don't need that schedule data any more */
        iso_sched_free (stream, iso_sched);
-       urb->hcpriv = NULL;
+       urb->hcpriv = stream;
 
        timer_action (ehci, TIMER_IO_WATCHDOG);
        return enable_periodic(ehci);
@@ -2093,7 +2094,7 @@ sitd_link_urb (
 
        /* don't need that schedule data any more */
        iso_sched_free (stream, sched);
-       urb->hcpriv = NULL;
+       urb->hcpriv = stream;
 
        timer_action (ehci, TIMER_IO_WATCHDOG);
        return enable_periodic(ehci);