Merge remote-tracking branches 'asoc/fix/rt5677', 'asoc/fix/st', 'asoc/fix/sun4i...
[firefly-linux-kernel-4.4.55.git] / sound / soc / intel / skylake / skl-sst-dsp.c
index 94875b008b0b83a221789f281852d195305faf9c..1bfb7f63b5724d98e8acf1446364fafec01e115f 100644 (file)
@@ -175,7 +175,7 @@ static int skl_dsp_core_power_down(struct sst_dsp  *ctx)
        /* poll with timeout to check if operation successful */
        return sst_dsp_register_poll(ctx,
                        SKL_ADSP_REG_ADSPCS,
-                       SKL_ADSPCS_SPA_MASK,
+                       SKL_ADSPCS_CPA_MASK,
                        0,
                        SKL_DSP_PD_TO,
                        "Power down");
@@ -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;