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
On Fri, 2003-02-14 at 21:37, Bernhard Kaindl wrote:
> 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.
Its actually seriously useful. The AMR is extremely cheap and if
you can hang up, make calls and capture/generate audio you've just
acquired an extremely cheap answering machine/voice-to-ip link
Hi!
> 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.
As long as you are in Europe, you are okay. And V.34 is pretty
difficult to write, anyway. [There's implementation of most of v.34 in
assembler for some TI DSP, somewhere, but it misses echo cancelling
and setup protocol].
Pavel
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]