Looking at the arago git tree as of mid November, the musb usb code has a fix in routine usb_process_tx_queue in cppi41_dma.c to schedule out the wait for tx fifo empty completion interrupt. This is done in txdma_completion_work
As the comment in that routine states:
/* Sometimes a EP can unregister from a DMA
* channel while the data is still in the FIFO.
* Probable reason a proper abort was not
* called before taking such a step.
* Protect against such cases.
*/
Unfortunately the routine usb_process_tx_queue still contains a redundant call to do:
epio = tx_ch->end_pt->regs;
csr = musb_readw(epio, MUSB_TXCSR);
The tx_ch->end_pt sometimes goes away with a resulting kernel crash!
The above two lines can be deleted from ''usb_process_tx_queue'' in any case as they are no longer needed.
Regards
Jamie