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

Commit 9c24b167 authored by Mark Brown's avatar Mark Brown Committed by Mark Brown
Browse files

ASoC: wm8962: Restore device state after reset in runtime resume



After the device has been reset we need to repeat the same
initialisation we do on probe to make sure that the device is in
a known state.

Tested-by: default avatarNicolin Chen <b42378@freescale.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent d74e9e70
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -3756,6 +3756,21 @@ static int wm8962_runtime_resume(struct device *dev)

	wm8962_reset(wm8962);

	/* SYSCLK defaults to on; make sure it is off so we can safely
	 * write to registers if the device is declocked.
	 */
	regmap_update_bits(wm8962->regmap, WM8962_CLOCKING2,
			   WM8962_SYSCLK_ENA, 0);

	/* Ensure we have soft control over all registers */
	regmap_update_bits(wm8962->regmap, WM8962_CLOCKING2,
			   WM8962_CLKREG_OVD, WM8962_CLKREG_OVD);

	/* Ensure that the oscillator and PLLs are disabled */
	regmap_update_bits(wm8962->regmap, WM8962_PLL2,
			   WM8962_OSC_ENA | WM8962_PLL2_ENA | WM8962_PLL3_ENA,
			   0);

	regcache_sync(wm8962->regmap);

	return 0;