Simple card and PLL/FLL

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Fri Dec 9 01:05:51 CET 2022


Hi Emanuele

> I want to understand what is the right way to implement PLL/FLL usage
> on audio codec when using simple-card.
> In wm8904 driver I found that FLL is used if set_sysclk is called
> (that means mclk-fs property is set, otherwise it is not called).
> In this case the frequency passed to set_sysclk is assumed to be the
> "desired" frequency, the codec read the currently clkrate coming from
> "cpu" ("clk_get_rate(priv->mclk)") and use these information to
> program FLL.
> In other codec drives I do not find a similar approach.
> In general codec register the set_pll function but it is never called
> by simple-card driver.
> I guess what is the "right/better" implementation? Have we to add the
> set_pll call in simple-card? Or have we to add it to e.g. fsl_sai
> driver? Or, in some way, the wm8904 codec driver is approaching in the
> right way?
> 
> Is there any documentation that explain all of that (I have already
> looked at Documentation/sound)? Any driver that is considered well
> written and complete I should use as a reference?

Handling clock is one of difficult part on generic driver, IMO.
Therefore, "Audio Graph Card" and "Audio Graph Card2" are supporting
Customizing feature (Unfortunately simple-card doesn't have it).
I'm happy if it works for you.

These are sample code

Audio Graph Card + Customize
	${LINUX}/sound/soc/tegra/tegra_audio_graph_card.c

Audio Graph Card2 + Customize
	${LINUX}/sound/soc/generic/audio-graph-card2-custom-sample.c
	${LINUX}/sound/soc/generic/audio-graph-card2-custom-sample.dtsi

Thank you for your help !!

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list