Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b1af3f8 authored by Mark Brown's avatar Mark Brown
Browse files

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: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent b3d7615f
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -2874,6 +2874,15 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
	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 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
				&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: