Re: [PATCH v2] ASOC: wm8960: Add multiple MCLK frequency support

From: chen liu
Date: Fri Dec 22 2017 - 05:40:36 EST


2017-12-22 0:48 GMT+08:00 Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>:
> On Tue, Dec 19, 2017 at 02:19:48PM +0800, chen liu wrote:
>> 2017-12-18 19:55 GMT+08:00 Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>:
>> > On Mon, Dec 18, 2017 at 07:32:41PM +0800, chen liu wrote:
>> > > 2017-12-18 17:31 GMT+08:00 Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx
>> > > > On Fri, Dec 15, 2017 at 09:07:15PM +0800, chen liu wrote:
>> > > > > 2017-12-15 0:19 GMT+08:00 Charles Keepax <
>> > ckeepax@xxxxxxxxxxxxxxxxxxxxx
>> > > > > > 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.