Patch "ASoC: wm8960: Fix wrong bclk and lrclk with pll enabled for some chips" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ASoC: wm8960: Fix wrong bclk and lrclk with pll enabled for some chips

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     asoc-wm8960-fix-wrong-bclk-and-lrclk-with-pll-enable.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4cda41c5e46a990321c733720c53486061991bc4
Author: Shengjiu Wang <shengjiu.wang@xxxxxxx>
Date:   Fri Mar 19 18:48:46 2021 +0800

    ASoC: wm8960: Fix wrong bclk and lrclk with pll enabled for some chips
    
    [ Upstream commit 16b82e75c15a7dbd564ea3654f3feb61df9e1e6f ]
    
    The input MCLK is 12.288MHz, the desired output sysclk is 11.2896MHz
    and sample rate is 44100Hz, with the configuration pllprescale=2,
    postscale=sysclkdiv=1, some chip may have wrong bclk
    and lrclk output with pll enabled in master mode, but with the
    configuration pllprescale=1, postscale=2, the output clock is correct.
    
    >From Datasheet, the PLL performs best when f2 is between
    90MHz and 100MHz when the desired sysclk output is 11.2896MHz
    or 12.288MHz, so sysclkdiv = 2 (f2/8) is the best choice.
    
    So search available sysclk_divs from 2 to 1 other than from 1 to 2.
    
    Fixes: 84fdc00d519f ("ASoC: codec: wm9860: Refactor PLL out freq search")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@xxxxxxx>
    Acked-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/1616150926-22892-1-git-send-email-shengjiu.wang@xxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index 9ed455700954..228ab7bd314d 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -710,7 +710,13 @@ int wm8960_configure_pll(struct snd_soc_codec *codec, int freq_in,
 	best_freq_out = -EINVAL;
 	*sysclk_idx = *dac_idx = *bclk_idx = -1;
 
-	for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) {
+	/*
+	 * From Datasheet, the PLL performs best when f2 is between
+	 * 90MHz and 100MHz, the desired sysclk output is 11.2896MHz
+	 * or 12.288MHz, then sysclkdiv = 2 is the best choice.
+	 * So search sysclk_divs from 2 to 1 other than from 1 to 2.
+	 */
+	for (i = ARRAY_SIZE(sysclk_divs) - 1; i >= 0; --i) {
 		if (sysclk_divs[i] == -1)
 			continue;
 		for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux