On Tue, Mar 06, 2012 at 09:51:09PM +0100, Nils wrote:
Op maandag 05-03-2012 om 15:41 uur [tijdzone -0500], schreef Kevin O'Connor:
Nothing in the TD. Can you try the patch below (again, on top of the free pipe fix at the beginning of this thread). This patch will also dump the ED.
See seriallog-20120306_210506.log. (i don't see the ED dump?)
It's the lines with "ed=...". Anyway, nothing interesting there. What I can see is that the frame counter halts right at the point when it gets to the new "endpoint descriptor". This is definitely odd, as there is an endpoint descriptor already there that it doesn't seem to have any issue with. No status is put anywhere to indicate why the controller stops updating the frame counter.
You could try, dumping the value of cntl->regs->periodicstart and cntl->regs->fminterval at the end of start_ohci() to see if there's something odd there.
You could also try setting the Skip bit in ohci_alloc_intr_pipe (ed->hwINFO |= ED_SKIP) to see if the issue is with the TDs or EDs. You could also try replacing malloc_low calls with malloc_high calls in ohci_alloc_intr_pipe to see if maybe the controller doesn't like the memory addresses.
Another thing you could try is to post the log with the call to set_idle() in usb-hid.c commented out.
See seriallog-20120306_214554.log.
Thanks, Nils.
-Kevin