ASoC: Intel: Skylake: Process code loader DMA interrupt
authorSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Fri, 10 Jul 2015 16:48:43 +0000 (22:18 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 16 Jul 2015 20:46:50 +0000 (21:46 +0100)
The code loader DMA interrupt is received by main interrupt handler which
dispatches it to cldma routines

Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@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
sound/soc/intel/skylake/skl-sst-ipc.c

index 313ca7c6ca7f97cce8bb0c98c49ad5137f1de6cd..94875b008b0b83a221789f281852d195305faf9c 100644 (file)
@@ -267,6 +267,11 @@ irqreturn_t skl_dsp_sst_interrupt(int irq, void *dev_id)
                result = IRQ_WAKE_THREAD;
        }
 
+       if (val & SKL_ADSPIS_CL_DMA) {
+               skl_cldma_int_disable(ctx);
+               result = IRQ_WAKE_THREAD;
+       }
+
        spin_unlock(&ctx->spinlock);
 
        return result;
index 94be6cbf2698b2f50404d6f1edbc6c9a901557d4..bd5ac4165151e867edbfc21ed38b4f7bb7bf48d7 100644 (file)
@@ -375,6 +375,9 @@ irqreturn_t skl_dsp_irq_thread_handler(int irq, void *context)
        u32 hipcie, hipct, hipcte;
        int ipc_irq = 0;
 
+       if (dsp->intr_status & SKL_ADSPIS_CL_DMA)
+               skl_cldma_process_intr(dsp);
+
        /* Here we handle IPC interrupts only */
        if (!(dsp->intr_status & SKL_ADSPIS_IPC))
                return IRQ_NONE;