Hi,
I've been looking at the USB serial gadget on DM814x. I had to insert a schedule_timeout() in the txdma_completion_work() loop in board-support/linux-2.6.37-psp04.04.00.01/drivers/usb/musb/cppi41_dma.c, as suggested in http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/230498/842210.aspx. Even so, I see that the MUSB_TXCSR_FIFONOTEMPTY bit never goes away. Specifically, I see:
- The first packet gets sent by the PSP itself, by DMA transparent mode from acm_cdc_notify() in drivers/usb/gadget/f_acm.c, into the DMA channel for EP1.
- The txdma_completion_work() loop shows that the EP1 fifo is never emptied - FIFONOTEMPTY is always set in TXCSR, and never goes away
- When my application writes to the ttyGS0, that data goes to the DMA channel for EP0, in generic RNDIS mode.
- The txdma_completion_work() loop shows that the EP0 fifo gets emptied. I.e., the FIFONOTEMPTY bit gets set, then goes away, as expected.
I don't see mention of this in the known deficiencies in the EZSDK 5_05_02_00 release notes. Is this a problem with CPPI 4.1 DMA, or USB CDC notifications?
Dan -