ASoC: cs42l43: Use fls to calculate the pre-divider for the PLL
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Thu, 25 Jan 2024 10:31:17 +0000 (10:31 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 26 Jan 2024 14:47:00 +0000 (14:47 +0000)
Use fls to calculate the pre-divider and input frequency for the PLL,
this is marginally faster than the previous loop.

Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://msgid.link/r/20240125103117.2622095-7-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs42l43.c

index 23e9557494afaf7103917841362bfba8e502457e..2c402086924d33418f10064b2fd333384574d92f 100644 (file)
@@ -1338,10 +1338,9 @@ static int cs42l43_enable_pll(struct cs42l43_codec *priv)
 
        dev_dbg(priv->dev, "Enabling PLL at %uHz\n", freq);
 
-       while (freq > cs42l43_pll_configs[ARRAY_SIZE(cs42l43_pll_configs) - 1].freq) {
-               div++;
-               freq /= 2;
-       }
+       div = fls(freq) -
+             fls(cs42l43_pll_configs[ARRAY_SIZE(cs42l43_pll_configs) - 1].freq);
+       freq >>= div;
 
        if (div <= CS42L43_PLL_REFCLK_DIV_MASK) {
                int i;