On Wed, Mar 03, 2021 at 11:07:42AM +0800, Shengjiu Wang wrote: > 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> Thanks, Charles