Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 14 Feb 2003 22:37:22 +0100 | From | Bernhard Kaindl <> | Subject | Had ICH3 DMA engine for AC'97 modem codec running |
| |
Hi, What I describe below was just a short fun project of me:
It looks like I've got the DMA engine of an ICH chip for an AC'97 modem codec running(it looks, don't have proof, only saw the DMA engine accepting data and sending me zeroes)
Note, an AC'97 modem codec is only the hardware part of an Riser modem, the biggest part of such modems is software.
I only received zeros because I was not able to configure the analog circuit to 'take off the hook', and loopback seems to require this also.
Also note that V34 and faster codecs are patented. It's not allowed to write code for these you have a licence. Maybe it's enough to have such modem, I just want to say that this is just for fun and not to use it as modem.
I think I can give some introductuion on the subject of an AC'97 modem or AMR (Audio Modem Riser):
AC'97 is a serial bus which works in a time division slot based fashion.
Riser modems and AC'97 sound cards have a similar interface, both have ADC/DAC channels and registers for receiving and sending audio signals which are accessible thru the AC97 controller.
To allow simultaneous use of an AC'97 sound card and a AC'97 Modem, the AC'97 controller chip provides two PCI functions which can be used independent of each other, one for Sound and one for Modem.
Devices connected to the AC'97 bus are called AC'97 codecs. They can be onboard or in an AC'97 slot.
The interface for an AC'97 modem codec works like interface for the AC'97 sound codec.
I've taken the ALSA and OSS ac97 sound drivers and changed them so that I could powerup the Modem, could read/write the registers and check how it responds.
After this was working, I went on to check if I could also manage to stream the audio data to/from the AC'97 controller.
As I obviously got the DMA engine of the AC'97 controller of my Intel 810 chipset running, I thought it is a nice thing and I thought it would be good to share the changes I've done on top of the i810_audio driver to let it speak to the modem with other possibly interested people.
I took the drivers/sound/i810_audio.c from 2.4.19 and started converting it use the modem function of the AC'97 controller chip while still using /dev/dsp for receiving/sending data to/from the audio codec but accessing the modem codec instead.
The data read were only zeros and the written data was sent into the void because I've not brought up the telephone line interface completely, but the DMA engine of the chip was actually running, clocking, sending me data(only zeros, as I didn't program the analog circuits) and accepting data to be sent to the codec.
The attached diff could be used by interested hackers who have the time to read the specs and want play with the chips.
Nearly every Info I needed was found in the AC'97 Component Specification Rev2.3 from Intel, the standard work on AC'97.
You can get it from this page: http://www.intel.com/labs/media/audio/index.htm
If you looked into the spec and the diff and need more info, you can send me a note. Bernd[unhandled content-type:application/x-gunzip] | ![\](/images/icornerr.gif) |