ASoC: Intel: Skylake: Verify the status bit before handling interrupt
authorJeeja KP <jeeja.kp@intel.com>
Fri, 9 Oct 2015 08:01:49 +0000 (09:01 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 9 Oct 2015 10:18:59 +0000 (11:18 +0100)
Like we have in legacy mode HDA driver, we need to check the
status bit and handle interrupt only when it is not zero or all
bits set.  We typically see the status as all 1's when controller
resumes from suspend, So add the check here as well and don't
handle for these cases.

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl-sst-dsp.c

index 194bd0036454046b180e7c0869366d3d85dabb6e..1bfb7f63b5724d98e8acf1446364fafec01e115f 100644 (file)
@@ -262,6 +262,11 @@ irqreturn_t skl_dsp_sst_interrupt(int irq, void *dev_id)
        val = sst_dsp_shim_read_unlocked(ctx, SKL_ADSP_REG_ADSPIS);
        ctx->intr_status = val;
 
+       if (val == 0xffffffff) {
+               spin_unlock(&ctx->spinlock);
+               return IRQ_NONE;
+       }
+
        if (val & SKL_ADSPIS_IPC) {
                skl_ipc_int_disable(ctx);
                result = IRQ_WAKE_THREAD;