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