Hello Mark and Emanuele On Wed, Dec 07, 2022 at 05:37:50PM +0000, Mark Brown wrote: > On Wed, Dec 07, 2022 at 01:41:24PM +0100, Emanuele Ghidoli wrote: > > > 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? > > It's kind of a taste thing. There's some devices where the clocking is > sufficently complicated and flexible that definitely needs a set_pll() > ... > for simpler devices like the WM8904 where there's an obvious thing to > do it's much easier to just hide that from everything outside the > driver and only deal with the input clock. Thinking about asoc_simple_hw_params(), what about the fact that asoc_simple_set_clk_rate() ask for a specific clock rate and assume that the actual output frequency is the one requested? After that we are potentially passing to the codec driver a wrong information, we should likely have a way to pass the actual clock that could be different because of limitation on the PLL/dividers. Francesco