[alsa-devel] ASoC: hook for codec control updates and clock controls

Daniel Mack daniel at caiaq.org
Sun Dec 7 18:38:25 CET 2008


Codecs like the tlv320aic3x family have soft volume controls to smoothly
drive up and down mixer elements in order to prevent clicks and pops. In
fact, most of the controls on this chip are implemented as such. For the
mixers to work, however, the I2S input clock is needed which is 
currently only true when the DAC/ACD elements are active but not when
the chip is just operating as an analog mixer.

To allow this functionality, the I2S clock must be present for a short
period after each volume control update to the codec and disabled again
after some milliseconds. It should, however, not be enabled if it's
already running and of course, it must not be disabled if the ADC/DAC
is still running.

Adding a hook to struct snd_soc_codec which is called from
snd_soc_update_bits() isn't a big deal, but the problem is the
abstraction layers in this case - for good reasons, the cpu_dai is not
accessible from the codec dai. Or did I miss a link?

Is there a sane way to address this problem?

Thanks and best regards,

More information about the Alsa-devel mailing list