ASoC: wm_adsp: Factor out fetching of stream errors from the DSP
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Wed, 6 Apr 2016 10:21:53 +0000 (11:21 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 6 Apr 2016 17:15:21 +0000 (10:15 -0700)
Factor out the reading of the DSP error flag into its own function to
support further improvements to the code.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm_adsp.c

index 953c427..f70c609 100644 (file)
@@ -2816,6 +2816,23 @@ static int wm_adsp_buffer_update_avail(struct wm_adsp_compr_buf *buf)
        return 0;
 }
 
+static int wm_adsp_buffer_get_error(struct wm_adsp_compr_buf *buf)
+{
+       int ret;
+
+       ret = wm_adsp_buffer_read(buf, HOST_BUFFER_FIELD(error), &buf->error);
+       if (ret < 0) {
+               adsp_err(buf->dsp, "Failed to check buffer error: %d\n", ret);
+               return ret;
+       }
+       if (buf->error != 0) {
+               adsp_err(buf->dsp, "Buffer error occurred: %d\n", buf->error);
+               return -EIO;
+       }
+
+       return 0;
+}
+
 int wm_adsp_compr_handle_irq(struct wm_adsp *dsp)
 {
        struct wm_adsp_compr_buf *buf;
@@ -2834,16 +2851,9 @@ int wm_adsp_compr_handle_irq(struct wm_adsp *dsp)
 
        adsp_dbg(dsp, "Handling buffer IRQ\n");
 
-       ret = wm_adsp_buffer_read(buf, HOST_BUFFER_FIELD(error), &buf->error);
-       if (ret < 0) {
-               adsp_err(dsp, "Failed to check buffer error: %d\n", ret);
-               goto out;
-       }
-       if (buf->error != 0) {
-               adsp_err(dsp, "Buffer error occurred: %d\n", buf->error);
-               ret = -EIO;
+       ret = wm_adsp_buffer_get_error(buf);
+       if (ret < 0)
                goto out;
-       }
 
        ret = wm_adsp_buffer_read(buf, HOST_BUFFER_FIELD(irq_count),
                                  &buf->irq_count);