2017-12-22 0:48 GMT+08:00 Charles Keepax ckeepax@opensource.cirrus.com:
On Tue, Dec 19, 2017 at 02:19:48PM +0800, chen liu wrote:
2017-12-18 19:55 GMT+08:00 Charles Keepax ckeepax@opensource.cirrus.com:
On Mon, Dec 18, 2017 at 07:32:41PM +0800, chen liu wrote:
2017-12-18 17:31 GMT+08:00 Charles Keepax <ckeepax@opensource.cirrus.com
On Fri, Dec 15, 2017 at 09:07:15PM +0800, chen liu wrote:
2017-12-15 0:19 GMT+08:00 Charles Keepax <
ckeepax@opensource.cirrus.com
> On Wed, Dec 13, 2017 at 08:37:30PM +0800, Chen.Liu wrote:
One thing I don't understand though is it looks like the freq_out returned from wm8960_configure_pll should already be taking the SYSCLK_DIV into account:
for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) { sysclk = lrclk * dac_divs[j]; freq_out = sysclk * sysclk_divs[i];
So if lrclk=44100, j=0, i=2 which I believe is the case in question we should get:
sysclk = 44100 * 256 = 11.2896MHz freq_out = 11.2896MHz * 2 = 22.5792MHz
So when wm8960_configure_pll returns i=2 then it should also be setting freq_out as 22.5792MHz. So you final call there to wm8960_set_pll should be:
Hi Charles,
You are right.
This problem seems to affect only the clock frequency configured in manual mode.
Because i'm directly calling the 'snd_soc_dai_set_pll' function in the machine driver,the driver will prompts ''WM8960 PLL: Unsupported N" error message. The following code is part of how i configured the clock frequency in the machine driver: ====================================================== + if (params_rate(params) == 44100) + pll_out = 11289600; + else + pll_out = 12288000; + + ret = snd_soc_dai_set_pll(codec_dai, WM8960_SYSCLK_PLL, 0, + data->clk_frequency, pll_out);
======================================================
On the other hand,i think if the codec support these MCLK clock frequency in the manual,so no matter use manual mode and automatic mode to configure the clock frequency,the driver prompt errors is very bad.
Thanks again, Chen.