[alsa-devel] Dealing with 'siamesed' DAC sample rates

Takashi Iwai tiwai at suse.de
Mon Sep 3 14:37:51 CEST 2007

At Fri, 31 Aug 2007 09:37:14 -0700,
John Utz wrote:
> Hi Takashi;
> tnx so much for your suggestion, however, 'tis a bit more complicated
> methinks....
> On Fri, 31 Aug 2007 13:20:29 +0200
> "Takashi Iwai" <tiwai at suse.de> wrote:
> > At Thu, 30 Aug 2007 12:42:10 -0700,
> > John Utz wrote:
> > > 
> > > > It seems like the right thing to do would be to check if any other
> > > > DACs are in use.
> > > 
> > > perhaps, but i dont think that there is a 'DAC IN USE' function. Are
> > > you aware of one?
> > 
> > Not in the ac97_codec side.
> > Usually the rate-lock over streams is implemented in the controller
> > side.
> Ok, but in the case of the VT1618 it's implemented on the codec itself
> and i have no choice.
> With that in mind, is the fact that it's usually done on the controller
> side relevant? Does this chip fact modify your thoughts?

The problem is that it's the controller who handles DMA and decides
which stream to play.  AC97 is just a slave, which does the DA/AD
conversion.  So, what you have to take care is rather the controller

> So, by controller, do you mean the via8237 (via82xx) side?
> I had pondered doing it there, but that would require the via82xx code
> to know something about the codec that it's controlling and that code
> at present seems to know nothing about the child codecs, how would i
> get the codec ID value back to the via82xx code in order for it to do
> any decision making?

VIA82xx can't control the multi-channel streams in separate DMAs,
AFAIK.  The multi-stream mode is for the single-codec and via82xx
itself mixes the streams.  Thus, it's neither for multi codecs nor
multi-channel.s  In the multi-channel mode, it can handle only one
stream with multiple channels.  So, you cannot start/stop the stream
for each channel/codec separately.


More information about the Alsa-devel mailing list