thedopefishlives, on May 15 2006, 02:40 PM, said:
I believe it does, but if it doesn't, no matter. I am curious, Ed, as to how Apple's drivers handle interrupts. In particular, I am not so certain that the driver is triggering the interrupt at the end of DMA transfer, which would stop the DMA engine. I'd like to throw in some debug statements to see if the interrupt executes, but I'm not sure I can find the right spot.
You don't really need an interrupt. The chip is just supposed to loop whatever you inserft in the DMA. Apple's audio implementation needs the HW pointer of the where the CODEC is at so it can make deterministic predictions. That's where I was getting some problems. When I read this IO position, it never changes.
I don't know if you have the latest lastest code I have but I had managed to clean up some of the IO mappings at the time I was working on the driver. I'm pretty sure that I have the DMA mappings structured correcly. I also had asked ATI for a data sheet but they never even responded.
Be carefull with the IOLOG. It doesn't seem to print everything. You can't really rely on it.
You might want to stub the getDMAEngineHardwarePointer function and return an incremental value instead of actually reading the chip pointer to see how differently the driver behaves. I suspect that the driver doesn't work because it's not getting moving position. If you fake it , you will at least see how differently the dirver behaves.
Hopefully, I will be able to continue working on it soon.