Unverified Commit 5489e81f authored by Michał Mirosław's avatar Michał Mirosław Committed by Mark Brown
Browse files

ASoC: wm8904: enable MCLK in STANDBY



MCLK input is needed when accessing any register after enabling SYSCLK.

This also fixes imbalance of clk_enable / clk_disable when transitioning
between ON -> STANDBY -> ON bias levels.

Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
Acked-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fb82c6ed
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1837,9 +1837,6 @@ static int wm8904_set_bias_level(struct snd_soc_component *component,

	switch (level) {
	case SND_SOC_BIAS_ON:
		ret = clk_prepare_enable(wm8904->mclk);
		if (ret)
			return ret;
		break;

	case SND_SOC_BIAS_PREPARE:
@@ -1864,6 +1861,15 @@ static int wm8904_set_bias_level(struct snd_soc_component *component,
				return ret;
			}

			ret = clk_prepare_enable(wm8904->mclk);
			if (ret) {
				dev_err(component->dev,
					"Failed to enable MCLK: %d\n", ret);
				regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies),
						       wm8904->supplies);
				return ret;
			}

			regcache_cache_only(wm8904->regmap, false);
			regcache_sync(wm8904->regmap);