--- 07351576e94f11718006741f2c18816616c1e725 +++ db201c072ee9867156b2f400201fdf03042906c1 @@ -792,6 +792,7 @@ int soc_pcm_close(struct snd_pcm_substre if (platform->driver->ops && platform->driver->ops->close) platform->driver->ops->close(substream); cpu_dai->runtime = NULL; + printk(KERN_INFO "[AUD] soc_pcm_close(), set runtume null\n"); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { /* start delayed pop wq here for playback streams */ @@ -1221,6 +1222,11 @@ int snd_soc_suspend(struct device *dev) /* close any waiting streams and save state */ for (i = 0; i < card->num_rtd; i++) { + /* do not flush delayed work to trigger DAPM when DAi is ignore_suspend */ + if (card->rtd[i].dai_link->ignore_suspend || + card->rtd[i].dai_link->no_pcm) + continue; + flush_delayed_work_sync(&card->rtd[i].delayed_work); card->rtd[i].codec->dapm.suspend_bias_level = card->rtd[i].codec->dapm.bias_level; }