]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ASoC: tlv320aic32x4: Ensure a minimum delay before clock stabilization
authorMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 11 Sep 2020 17:31:38 +0000 (19:31 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 21 Sep 2020 21:08:34 +0000 (22:08 +0100)
As indicated in the datasheet, a 10ms delay must be observed after
programming the divisors.

The lack of delay prevents the codec to work properly and the playback
appears extremely slow and totally un-audible on a custom sama5 based
board.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/r/20200911173140.29984-2-miquel.raynal@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tlv320aic32x4-clk.c

index 156c153c12ab85aa1572e2dfad3e7601ff5ec7b4..2f78e6820c75a1f21ed6d773d097a03c299e4874 100644 (file)
@@ -230,7 +230,14 @@ static int clk_aic32x4_pll_set_rate(struct clk_hw *hw,
        if (ret < 0)
                return -EINVAL;
 
-       return clk_aic32x4_pll_set_muldiv(pll, &settings);
+       ret = clk_aic32x4_pll_set_muldiv(pll, &settings);
+       if (ret)
+               return ret;
+
+       /* 10ms is the delay to wait before the clocks are stable */
+       msleep(10);
+
+       return 0;
 }
 
 static int clk_aic32x4_pll_set_parent(struct clk_hw *hw, u8 index)