summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-12-03 16:02:10 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-17 14:47:02 -0800
commitf9344fd27eab6c76963cae0a7b739f76150e9f65 (patch)
treefa27ac3caf07673471a0f4a9ef86f3e19d7fab1d
parent62113697bd20e68aead4ab528d59e782081633c6 (diff)
ASoC: When disabling WM8994 FLL force a source selection
commit 4514e8997fbefd5befd6176ac9785e287b4daed4 upstream. When we disable the WM8994 FLL code path sharing means that we end up writing out a configuration. Currently this is the currently active input and output frequency (which causes snd_soc_update_bits() to suppress actual writes both immediately and in the common case where we reenable the same configuration later) but we allow machine drivers to pass through a source of zero. Since the register values written are one less than the source constants this causes corruption of other bitfields in the register. Fix this by using the most recently configured FLL source when none is provided. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--sound/soc/codecs/wm8994.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 522249d5c2b4..b3fdbbc1d9fd 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2914,6 +2914,7 @@ static int wm8994_set_fll(struct snd_soc_dai *dai, int id, int src,
/* Allow no source specification when stopping */
if (freq_out)
return -EINVAL;
+ src = wm8994->fll[id].src;
break;
case WM8994_FLL_SRC_MCLK1:
case WM8994_FLL_SRC_MCLK2: