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

Mark Brown broonie at sirena.org.uk
Sun Dec 7 20:02:40 CET 2008

On Sun, Dec 07, 2008 at 06:38:25PM +0100, Daniel Mack wrote:

> 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.

What exactly do you mean when you say "I2S clock input" here?  An I2S
link has two clocks, a bit clock and a frame clock and most codecs also
use a third, master, clock which is not associated directly with an I2S
link.  I suspect that the requirement is for the master clock...

The clocking is the responsibility of the board driver - often the
clocks are disabled while the link is inctive but this up to the board
driver (and ultimately the hardware design).

> 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?

You'll be able to get there since the card is accessible but it's
unacceptable for the codec driver to go fiddling with other parts of the
link like you're suggesting here - it doesn't have enough information
about the system to know what to do.  The clocking for the bus could be
shared with other devices, the clocks could be provided by other devices
or the codec itself could be the clock master.

> Is there a sane way to address this problem?

It does depend on what the actual requirement is here.  Which clock or
clocks are the issue?

More information about the Alsa-devel mailing list