Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a561035 authored by John Hsu's avatar John Hsu Committed by Mark Brown
Browse files

ASoC: nau8825: reduce standby power consumption



Decrease internal clock frequency for power saving when standby.
But clock divider needs restore when MCLK as system clock in playback.

Signed-off-by: default avatarJohn Hsu <KCHSU0@nuvoton.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 407c71b6
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1132,6 +1132,9 @@ static int nau8825_configure_sysclk(struct nau8825 *nau8825, int clk_id,
		regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
			NAU8825_CLK_SRC_MASK, NAU8825_CLK_SRC_MCLK);
		regmap_update_bits(regmap, NAU8825_REG_FLL6, NAU8825_DCO_EN, 0);
		/* MCLK not changed by clock tree */
		regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
			NAU8825_CLK_MCLK_SRC_MASK, 0);
		ret = nau8825_mclk_prepare(nau8825, freq);
		if (ret)
			return ret;
@@ -1142,6 +1145,13 @@ static int nau8825_configure_sysclk(struct nau8825 *nau8825, int clk_id,
			NAU8825_DCO_EN);
		regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
			NAU8825_CLK_SRC_MASK, NAU8825_CLK_SRC_VCO);
		/* Decrease the VCO frequency for power saving */
		regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
			NAU8825_CLK_MCLK_SRC_MASK, 0xf);
		regmap_update_bits(regmap, NAU8825_REG_FLL1,
			NAU8825_FLL_RATIO_MASK, 0x10);
		regmap_update_bits(regmap, NAU8825_REG_FLL6,
			NAU8825_SDM_EN, NAU8825_SDM_EN);
		if (nau8825->mclk_freq) {
			clk_disable_unprepare(nau8825->mclk);
			nau8825->mclk_freq = 0;