Hello All,
I am working on the BeagleBoard for playing Audio. I am writing my own driver for it. I use SDMA to transfer my audio data to McBSP2 using software triggering. The data is sent in 1k chunks because of the FIFO size limitation. I have registered interrupt on end-of-block-transfer for SDMA. When the end-of-block occurs i trigger the DMA with my next chunk of data. This causes the transmit buffer to overflow and i listen a short tone instead of the song. To avoid the overflow i put a loop on XBUFFSTAT to check if 1K free locations are available; then trigger the DMA. This has solved the problem but the approach is not good as CPU time is being wasted on the wait loop. I have tried using the XRDY and XEMPTYEOF interrupts of McBSP for triggering DMA but they occur too soon. Can anyone kindly suggest me the solution?
Thanks & Regards,
Munam