summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-07-14 12:38:18 +0900
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-07-14 17:17:23 +0900
commit3b1af3f8c8f3298170fcbf6ef7971c3aeccc4318 (patch)
treec5aa23ce3d1f139b36049b12f09d0cd96b32afb0 /sound/soc
parentb3d7615f2a012c5e589209d08e89c4116134c9f4 (diff)
downloadlinux-3.10-3b1af3f8c8f3298170fcbf6ef7971c3aeccc4318.tar.gz
linux-3.10-3b1af3f8c8f3298170fcbf6ef7971c3aeccc4318.tar.bz2
linux-3.10-3b1af3f8c8f3298170fcbf6ef7971c3aeccc4318.zip
ASoC: Log WM8994 FIFO errors from the interrupt
We should spot them anyway on state changes but logging them gives us better time information about when the misconfiguration happened. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/wm8994.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index a49222246bf..3acb1bda6c7 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2874,6 +2874,15 @@ out:
return IRQ_HANDLED;
}
+static irqreturn_t wm8994_fifo_error(int irq, void *data)
+{
+ struct snd_soc_codec *codec = data;
+
+ dev_err(codec->dev, "FIFO error\n");
+
+ return IRQ_HANDLED;
+}
+
static int wm8994_codec_probe(struct snd_soc_codec *codec)
{
struct wm8994 *control;
@@ -2948,6 +2957,9 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
break;
}
+ wm8994_request_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR,
+ wm8994_fifo_error, "FIFO error", codec);
+
ret = wm8994_request_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
wm_hubs_dcs_done, "DC servo done",
&wm8994->hubs);
@@ -3210,6 +3222,7 @@ err_irq:
&wm8994->fll_locked[i]);
wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
&wm8994->hubs);
+ wm8994_free_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR, codec);
err:
kfree(wm8994);
return ret;
@@ -3231,6 +3244,7 @@ static int wm8994_codec_remove(struct snd_soc_codec *codec)
wm8994_free_irq(codec->control_data, WM8994_IRQ_DCS_DONE,
&wm8994->hubs);
+ wm8994_free_irq(codec->control_data, WM8994_IRQ_FIFOS_ERR, codec);
switch (control->type) {
case WM8994: