[alsa-devel] [PATCH BAT V1 0/7] BAT: Add Basic Audio Tester command line tool

Caleb Crome caleb at crome.org
Fri Sep 18 01:30:30 CEST 2015


On Thu, Sep 17, 2015 at 4:00 PM, James Cameron <quozl at laptop.org> wrote:
> On Thu, Sep 17, 2015 at 03:40:33PM -0700, Caleb Crome wrote:
>> The more I think of this channel synchronization issue, the
>> thorinier it gets.
>>
>> Basically, with the TLV320AIC series of codecs, whenever any of the
>> DAC or ADC channels are powered up on any codec, the MCLK needs to be
>> stopped, all DACs/ADCs turned off, then configuration can happen, then
>> all DACs/ADCs can be turned back on, then MCLK starts again.  That's
>> the only way to ensure phase/delay accuracy among several codecs.
>>
>> So, going from play-only to play+record requires MCLK be stopped, then
>> restarted.
>
> Aye.  Lots of clocks in lots of domains.  Also pay penalty of any
> delays needed to stabilise ADCs.
>
> Same general issue with many single codecs though, if capture vs
> playback synchronisation required.
>
>> Maybe it's not too terrible.  Any thoughts?
>
> In this scenario my preference would be to always configure the codecs
> and DMA for playback and capture, and do any gating higher in the
> stack; e.g. send zero samples if there is no playback stream, and
> discard samples if there is no capture stream.

Yes, this makes sense to me.  This is for this sort of special case
that I have where we have many synchronized codecs on the same bus.
It's really just 1 clock that needs to be gated -- the MCLK.

Is there any way for the machine driver to handle this?  Currently,
the AIC3x driver uses a dapm control to turn the ADCs and DACs on and
off.  Can the machine driver currently get some sort of pre and post
callback whenever particular controls are enabled?

I think to get through the day, I need to remove the
SND_SOC_DAPM_ADC("Left ADC", ...)
SND_SOC_DAPM_ADC("Right ADC", ...)
SND_SOC_DAPM_DAC("Left ...")
SND_SOC_DAPM_DAC("Right"
lines in tlv320aic3x, and just hard-wire them somewhere so they are
all always turned on.  Then I can make sure to turn on the clocks only
after all the codecs have been powered up and alsa thinks they are
configured.  I guess in the machine driver's trigger callback?

-Caleb








>
> --
> James Cameron
> http://quozl.linux.org.au/


More information about the Alsa-devel mailing list