[alsa-devel] ASOC snd_soc_dai_ops for clock mux control

Gabriel M. Beddingfield gabrbedd at gmail.com
Thu Apr 4 07:55:05 CEST 2013

On 04/03/2013 09:22 AM, Gellner, Christoph (ADITG/SW1) wrote:
> Hi all,
> I'm working on the driver of an audio CPU DAI IP providing
> -       Internal clocks which can be used for master clock generation by TX as well as RX section
> -       One oversampling clock available to RX section
> -       One oversampling clock available to TX section.
> Kernel version is 3.5.7
> I want to add support to the CPU DAI driver to
> -       Specify the rate of the input clocks
> -       Select which of the clock inputs shall be used by RX and which shall be used by TX section
> I'm currently wondering how to map this to existing snd_soc_dai_ops functions.
> Currently I see only set_sysclk, set_pll, set_clkdiv for clock control.
> I plan to use set_sysclk to specify the rate as well as the direction of each clock.
> What is currently missing for me is a way to specify the clock to be used by RX or TX section.
> Do you have any recommendation how to implement ?

Let's say your CPU DAI IP has 3 clocks which we'll call MCLK (master 
clock), FLL1, and FLL2 (the two oversampling clocks).

Are you wanting a way to say: "RX should use FLL1 and TX should use FLL2" ??

If so, there's a couple options I can think of.  (A) You could call a 
codec-specific API in your machine driver that expresses this intent. 
(B) you could create "virtual" clock ID's that express the mapping (e.g. 
FLL1_TX, FLL1_RX, FLL2_TX, FLL2_RX).  I think (A) is a cleaner solution 
that clearly communicates what is happening.


More information about the Alsa-devel mailing list