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: John Hsu <KCHSU0@nuvoton.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
407c71b698
commit
3a56103534
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user