Im trying to write a library to allow other apps to access the audio codec (sound chip) using the AC 97' interface. I have looked at the Linux sound driver code (ac97.h, ac97.c and ac97_codec.c) and the Intel documentation, and I still cant figure out how the 'actual' controlling the sound chip is done.

Lemme see if I can summarize my questions:

1) What is the lowest module that does the actual communication with the AC97 interface in that linux driver?
2) Whats the method used to do the communication? Device I/O thru ports, DMA, etc.?

What Im looking for really, is a general description of the process starting with being passed a pointer to the audio data buffer and ending with sending that data to the AC97 to be played.