Commit 8aa2df53 authored by Mark Brown's avatar Mark Brown

ASoC: Bodge around GCC 4.4.0 flow analysis bug in GCC 4.4.0

GCC 4.4.0 doesn't appear to be able to spot that we don't apply any FLL
configuration if the output frequency is zero.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent c5910a70
...@@ -1022,10 +1022,15 @@ static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, ...@@ -1022,10 +1022,15 @@ static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
if (freq_in == wm8400->fll_in && freq_out == wm8400->fll_out) if (freq_in == wm8400->fll_in && freq_out == wm8400->fll_out)
return 0; return 0;
if (freq_out != 0) { if (freq_out) {
ret = fll_factors(wm8400, &factors, freq_in, freq_out); ret = fll_factors(wm8400, &factors, freq_in, freq_out);
if (ret != 0) if (ret != 0)
return ret; return ret;
} else {
/* Bodge GCC 4.4.0 uninitialised variable warning - it
* doesn't seem capable of working out that we exit if
* freq_out is 0 before any of the uses. */
memset(&factors, 0, sizeof(factors));
} }
wm8400->fll_out = freq_out; wm8400->fll_out = freq_out;
...@@ -1040,7 +1045,7 @@ static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, ...@@ -1040,7 +1045,7 @@ static int wm8400_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
reg &= ~WM8400_FLL_OSC_ENA; reg &= ~WM8400_FLL_OSC_ENA;
wm8400_write(codec, WM8400_FLL_CONTROL_1, reg); wm8400_write(codec, WM8400_FLL_CONTROL_1, reg);
if (freq_out == 0) if (!freq_out)
return 0; return 0;
reg &= ~(WM8400_FLL_REF_FREQ | WM8400_FLL_FRATIO_MASK); reg &= ~(WM8400_FLL_REF_FREQ | WM8400_FLL_FRATIO_MASK);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment