I am using PSP 01_30_01 and Bios 5_41_09_34 on a custom board using the C6746/8. I am using SIO issue/reclaims with call back functions to write data out the mcbsp.
The problem I am having is that in certain error conditions I issue the Mcbsp_IOCTL_STOP on an output stream to the McBsp in order to recover all queued packets sent to the driver so that the system can be "restarted" from a known state. The problem I am having is that the stop command calls Mcbsp_localAbortReset which disables interrupts as it cleans up the floating queue and the pending queue. As it cleans up each packet, it calls the callback function configured for the stream. My call back function reclaims the originally issued buffer and does some minor clean up for the returned buffer. The issue, is that this process seems to take almost 12 mseconds to complete. This is a problem since I have a real time data processing restriction on data that comes in every 2.5 mseconds.
Does the Mcbsp_localAbortReset really need to keep interrupts disabled for its entire clean up process, or only a sub set of it? It seems really dangerous to keep interrupts disabled for an indeterminate amount of time since it just empties out two queues until it is done, but has no idea how large the queues really are.