(Adding ASoC maintainer at Cc).
On 16/12/15 08:54, Petr Kulhavy wrote:
Currently I'm struggling with the clocks on the DaVinci platform as the clock tree is defined in the platform driver and not in DT. Is there a way to reference the clocks by names from DT, or does the DaVinci clock driver need to be rewritten for DT support?
I don't think so, you need a clock provider to reference clocks in DT. You may want to ask such question on linux-arm-kernel@lists.infradead.org mailing list and Cc relevant maintainer(s).
There is one more thing I came across using the simple soundcard driver. The codec needs to be set to generate the clock via PLL. Unfortunately the simple soundcard always passes clock ID 0 to snd_soc_dai_set_sysclk() - I need a different value for the internal PLL.
What is the preferred approach here? On one hand the simple soundcard driver could be extended with a DT parameter "clock ID". Or does a dedicated soundcard driver need to be written?
I'm not sure what is the preference here, I guess a dedicated soundcard driver could be a way to go in your case.
On 14.12.2015 13:28, Sylwester Nawrocki wrote:
Yes, you need the clock provider somewhere. In my case it was the I2S driver that registered a clock provider. Probably you can add your output clock provider to your SoC's main clock controller driver, and perhaps use pinctrl API for the pin function mux setup. You can place assigned-clock* DT properties in the clock provider node and the PLL's will be configured by the kernel's clk subsystem. Grep for of_clk_set_defaults or see last chapter of Documentation/devicetree/bindings/clock/clock-bindings.txt.