aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baluta <daniel.baluta@nxp.com>2017-04-26 09:09:51 -0400
committerMark Brown <broonie@kernel.org>2017-04-30 09:14:27 -0400
commit66772eda0edbfbbbe7767a6b5d07e09dae84403d (patch)
tree52f10d0c2ddecb38a7040ab5b219537693e88767
parent303e8954af8daa087e4f42788672d280337071ab (diff)
ASoC: codec: wm9860: avoid maybe-uninitialized warning
The new PLL configuration code triggers a harmless warning: sound/soc/codecs/wm8960.c: In function 'wm8960_configure_clocking': sound/soc/codecs/wm8960.c:735:3: error: 'best_freq_out' may be used uninitialized in this function [-Werror=maybe-uninitialized] wm8960_set_pll(codec, freq_in, best_freq_out); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/codecs/wm8960.c:699:12: note: 'best_freq_out' was declared here Fix this by reworking the code such that: 1) When there is no PLL freq available return -EINVAL and make sure *bclk_idx, *dac_idx, *sysclk_idx are initialized with invalid values. 2) When there is a PLL freq available initialize *bclk_idx, *dac_idx and *sysclk_idx with correct values and immediately return the freq available. Fixes: 84fdc00d519f ("ASoC: codec: wm9860: Refactor PLL out freq search") Fixes: 303e8954af8d ("ASoC: codec: wm8960: Stop when a matching PLL freq is found") Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/wm8960.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index ace69da97cb8..d899623fb101 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -686,7 +686,7 @@ int wm8960_configure_sysclk(struct wm8960_priv *wm8960, int mclk,
686 * @bclk_idx: bclk_divs index for found bclk 686 * @bclk_idx: bclk_divs index for found bclk
687 * 687 *
688 * Returns: 688 * Returns:
689 * -1, in case no PLL frequency out available was found 689 * < 0, in case no PLL frequency out available was found
690 * >=0, in case we could derive bclk, lrclk, sysclk from PLL out using 690 * >=0, in case we could derive bclk, lrclk, sysclk from PLL out using
691 * (@sysclk_idx, @dac_idx, @bclk_idx) dividers 691 * (@sysclk_idx, @dac_idx, @bclk_idx) dividers
692 */ 692 */
@@ -696,13 +696,13 @@ int wm8960_configure_pll(struct snd_soc_codec *codec, int freq_in,
696{ 696{
697 struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); 697 struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
698 int sysclk, bclk, lrclk, freq_out; 698 int sysclk, bclk, lrclk, freq_out;
699 int diff, best_freq_out; 699 int diff;
700 int i, j, k; 700 int i, j, k;
701 701
702 bclk = wm8960->bclk; 702 bclk = wm8960->bclk;
703 lrclk = wm8960->lrclk; 703 lrclk = wm8960->lrclk;
704 704
705 *bclk_idx = -1; 705 *sysclk_idx = *dac_idx = *bclk_idx = -1;
706 706
707 for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { 707 for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) {
708 if (sysclk_divs[i] == -1) 708 if (sysclk_divs[i] == -1)
@@ -720,21 +720,12 @@ int wm8960_configure_pll(struct snd_soc_codec *codec, int freq_in,
720 *sysclk_idx = i; 720 *sysclk_idx = i;
721 *dac_idx = j; 721 *dac_idx = j;
722 *bclk_idx = k; 722 *bclk_idx = k;
723 best_freq_out = freq_out; 723 return freq_out;
724 break;
725 } 724 }
726 } 725 }
727 if (k != ARRAY_SIZE(bclk_divs))
728 break;
729 } 726 }
730 if (j != ARRAY_SIZE(dac_divs))
731 break;
732 } 727 }
733 728 return -EINVAL;
734 if (*bclk_idx != -1)
735 wm8960_set_pll(codec, freq_in, best_freq_out);
736
737 return *bclk_idx;
738} 729}
739static int wm8960_configure_clocking(struct snd_soc_codec *codec) 730static int wm8960_configure_clocking(struct snd_soc_codec *codec)
740{ 731{
@@ -783,11 +774,12 @@ static int wm8960_configure_clocking(struct snd_soc_codec *codec)
783 } 774 }
784 } 775 }
785 776
786 ret = wm8960_configure_pll(codec, freq_in, &i, &j, &k); 777 freq_out = wm8960_configure_pll(codec, freq_in, &i, &j, &k);
787 if (ret < 0) { 778 if (freq_out < 0) {
788 dev_err(codec->dev, "failed to configure clock via PLL\n"); 779 dev_err(codec->dev, "failed to configure clock via PLL\n");
789 return -EINVAL; 780 return freq_out;
790 } 781 }
782 wm8960_set_pll(codec, freq_in, freq_out);
791 783
792configure_clock: 784configure_clock:
793 /* configure sysclk clock */ 785 /* configure sysclk clock */