While porting Balloon to 2.6.7 I noted the potential dma alignment issue mentioned in the handhelds sa1100 usb sources. Having backported that to 2.4.25-vrs2-tcl1, the udc stability is substantially improved.
See http://www.toby-churchill.org/balloon/ for source.
The relevant file is arch/arm/mach-sa1100/usb_send.c #ifdef'd by NCB_DMA_FIX.
Note also the horrible (but necessary) hack to persude the UDCOMP back to where it was supposed to be in usb_ctl.c #ifdef'd by TCL_FIX.
The port to 2.6.7 progresses well and I'll put that on the balloon site soon.
I note that you include my dma alignment patch in the 2.6 tree but it has a ghastly error. I check for misalignment with a %3 not &3 .. oops. Also, the bounce buffer is statically allocated rather than being kmalloc'd with GFP_DMA. Another showstopper. Fixed and flourishing in my 2.6.7. There is also a lovely problem with sa1100usb.c in udc_interrupt() where it uses UDC_write(Ser0UDCCR, usb->udccr). This seems to sporadically crash the silicon, probably because of writing to the read-only UDA bit though it shouldn't care. This seems to cause a Tx interrupt with TPC zero and UDCOMP rewritten plus a stalled transmit. Changing it to UDC_clear(Ser0UDCCR, UDCCR_REM) fixes it spectacularly.
Hope this is of interest to someone. sorry if the wrong list.
Nick
-----------------------
Nick Bane
nick@cecomputing.co.uk
+44 (0)1954 719270
Received on Fri Aug 13 09:22:41 2004
This archive was generated by hypermail 2.1.8 : Fri Aug 13 2004 - 09:24:15 EDT