I am experiencing an issue where the mcbsp1 transmit stops functioning. I am using DSP/BIOS 5, with pspdrivers 01_30_01. This does not appear to be a BIOS specific issue, so I'll post here to the omap-l138 forum.
So, here's what is happening. The system is humming along, streaming audio data in/out using the mcbsp and the data goes elsewhere in the system. Eventually, given a long enough run time (5 minutes? -- used to be less, I think), I start getting a timeout error on the SIO_reclaim, essentially, my packet was not transmitted before a timer went off and said something is wrong. I hunted through the PaRAM for this channel, and everything looks normal. The PaRAM entry for the channel is identical to one of the two linked PaRAM ping-pongs, and is not changing, so something happened when that particular PaRAM entry was loaded.
I then looked at the McBSP FIFO for this channel. The write FIFO level was zero! That is definitely a problem. I disabled the write FIFO and re-enabled it, instantly seeing if fill up to 0x40, and also saw the proper decrease in the cCnt of the PaRAM entry -- hence DMA was working just fine. Again though, everything looked static, and so the fifo was not being used.
Note that the transmit bit clock and frame clock (omap-l138 is master) were moving the entire time.
Now, I tried writing a word to the DXR. This had the effect of bringing the mcbsp back into working order. DMA requests are being served and data is again flowing.
The question is, how can this occur? How can the fifo be empty and yet have the dma sitting there waiting to fill it? And, once the fifo is full, how is it possible that the mcbsp was not removing items from the fifo?