Multiple audio input/output streams with i.mx31

Started by vishveshwar July 10, 2008

Folks who have previously worked with based devices could
possibly help us with this.

We are in the process of designing a system based on Freescale iMX31
microcontroller (ARM11).

This system has multiple audio sources and sinks. We are using
Freescale MC13783 PMIC and a couple of audio codec devices (for
bluetooth etc). All audio devices available on PMIC (mic, stereo in/
out etc) are in use. Additional audio devices are interfaced using
audio codecs.

The interface between the i.mx31 controller and the PMIC and codecs is
the Audio Multiplexer (AUDMUX). This has two internal and five
external 'audio ports'.Audio port is a serial link for audio transfer.
The internal audio port is interfaced to controller core and the
external ports are interfaces to external devices. These ports can be
used in I2S, AC97 or SSI network mode. (I am currently trying to work
out how this works). Network mode is recommended when multiple audio
devices are to be used. An external audio port can be connected to the
internal audio port or it can be connected to another external audio
port depending on where the audio source is present.

Now, in our system PMIC uses two audio ports of imx31 and the audio
codecs use 1 audio port each.
Audio codecs normally use I2S interface mode, while MC13783 PMIC uses
SSI network mode.

My question is: If we need to route an audio input stream from PMIC to
one of the audio codecs, what should be the audio path?
Is it:
1. audio source -> PMIC -> audio port3 (network mode) -> audio port1 -
> imx31 internal (SW) buffer -> audio port2 -> audio port4 (i2s mode) - > audio codec -> audio output?
Basically, copy the input audio into a software-created buffer and copy back to output buffer. or, 2.Route the audio within AUDMUX itself without involving imx31 internal audio ports? My understanding is that this (option 2) would be possible if both audio ports are in same mode. What do you think? Thanks, Vishveshwar