diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-05-28 16:41:37 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-05-28 16:41:37 +0200 |
commit | 1ab9ecc24819a8cf8ee982aaf6fb83298f094b0d (patch) | |
tree | 4c8f24eca6c1e56a030586003b53f124966b0b9d /sound | |
parent | Merge remote-tracking branch 'asoc/fix/max98090' into asoc-linus (diff) | |
parent | ASoC: wm8994: check for array index returned (diff) | |
download | linux-1ab9ecc24819a8cf8ee982aaf6fb83298f094b0d.tar.xz linux-1ab9ecc24819a8cf8ee982aaf6fb83298f094b0d.zip |
Merge remote-tracking branch 'asoc/fix/wm8994' into asoc-linus
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/wm8994.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 1eb152cb1097..dfd997aaadfc 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -383,6 +383,8 @@ static int wm8994_get_drc_enum(struct snd_kcontrol *kcontrol, struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); int drc = wm8994_get_drc(kcontrol->id.name); + if (drc < 0) + return drc; ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc]; return 0; @@ -488,6 +490,9 @@ static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol, struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); int block = wm8994_get_retune_mobile_block(kcontrol->id.name); + if (block < 0) + return block; + ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block]; return 0; @@ -1031,7 +1036,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w, { struct snd_soc_codec *codec = w->codec; struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); - struct wm8994 *control = codec->control_data; + struct wm8994 *control = wm8994->wm8994; int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; int i; int dac; @@ -3833,6 +3838,11 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data) dev_dbg(codec->dev, "Ignoring removed jack\n"); return IRQ_HANDLED; } + } else if (!(reg & WM8958_MICD_STS)) { + snd_soc_jack_report(wm8994->micdet[0].jack, 0, + SND_JACK_MECHANICAL | SND_JACK_HEADSET | + wm8994->btn_mask); + goto out; } if (wm8994->mic_detecting) |