Patch "ASoC: wm8960: Remove bitclk relax condition in wm8960_configure_sysclk" has been added to the 5.10-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: Remove bitclk relax condition in wm8960_configure_sysclk

to the 5.10-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-remove-bitclk-relax-condition-in-wm8960_.patch
and it can be found in the queue-5.10 subdirectory.

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



commit ce4ee51cca0fe2e7a2faa9e6b3dfb6d41994cad9
Author: Shengjiu Wang <shengjiu.wang@xxxxxxx>
Date:   Wed Mar 3 11:07:42 2021 +0800

    ASoC: wm8960: Remove bitclk relax condition in wm8960_configure_sysclk
    
    [ Upstream commit 99067c07e8d877035f6249d194a317c78b7d052d ]
    
    The call sequence in wm8960_configure_clocking is
    
       ret = wm8960_configure_sysclk();
       if (ret >= 0)
            goto configure_clock;
    
       ....
    
       ret = wm8960_configure_pll();
    
    configure_clock:
       ...
    
    wm8960_configure_sysclk is called before wm8960_configure_pll, as
    there is bitclk relax on both functions, so wm8960_configure_sysclk
    always return success, then wm8960_configure_pll() never be called.
    
    With this case:
    aplay -Dhw:0,0 -d 5 -r 48000 -f S24_LE -c 2 audio48k24b2c.wav
    the required bitclk is 48000 * 24 * 2 = 2304000, bitclk got from
    wm8960_configure_sysclk is 3072000, but if go to wm8960_configure_pll.
    it can get correct bitclk 2304000.
    
    So bitclk relax condition should be removed in wm8960_configure_sysclk,
    then wm8960_configure_pll can be called, and there is also bitclk relax
    function in wm8960_configure_pll.
    
    Fixes: 3c01b9ee2ab9 ("ASoC: codec: wm8960: Relax bit clock computation")
    Signed-off-by: Shengjiu Wang <shengjiu.wang@xxxxxxx>
    Signed-off-by: Daniel Baluta <daniel.baluta@xxxxxxx>
    Acked-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/1614740862-30196-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 ceaf3bbb18e6..9d325555e219 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -608,10 +608,6 @@ static const int bclk_divs[] = {
  *		- lrclk      = sysclk / dac_divs
  *		- 10 * bclk  = sysclk / bclk_divs
  *
- *	If we cannot find an exact match for (sysclk, lrclk, bclk)
- *	triplet, we relax the bclk such that bclk is chosen as the
- *	closest available frequency greater than expected bclk.
- *
  * @wm8960: codec private data
  * @mclk: MCLK used to derive sysclk
  * @sysclk_idx: sysclk_divs index for found sysclk
@@ -629,7 +625,7 @@ int wm8960_configure_sysclk(struct wm8960_priv *wm8960, int mclk,
 {
 	int sysclk, bclk, lrclk;
 	int i, j, k;
-	int diff, closest = mclk;
+	int diff;
 
 	/* marker for no match */
 	*bclk_idx = -1;
@@ -653,12 +649,6 @@ int wm8960_configure_sysclk(struct wm8960_priv *wm8960, int mclk,
 					*bclk_idx = k;
 					break;
 				}
-				if (diff > 0 && closest > diff) {
-					*sysclk_idx = i;
-					*dac_idx = j;
-					*bclk_idx = k;
-					closest = diff;
-				}
 			}
 			if (k != ARRAY_SIZE(bclk_divs))
 				break;



[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