|
@@ -609,6 +609,10 @@ int snd_soc_suspend(struct device *dev)
|
|
SND_SOC_DAPM_STREAM_SUSPEND);
|
|
SND_SOC_DAPM_STREAM_SUSPEND);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Recheck all analogue paths too */
|
|
|
|
+ dapm_mark_io_dirty(&card->dapm);
|
|
|
|
+ snd_soc_dapm_sync(&card->dapm);
|
|
|
|
+
|
|
/* suspend all CODECs */
|
|
/* suspend all CODECs */
|
|
list_for_each_entry(codec, &card->codec_dev_list, card_list) {
|
|
list_for_each_entry(codec, &card->codec_dev_list, card_list) {
|
|
/* If there are paths active then the CODEC will be held with
|
|
/* If there are paths active then the CODEC will be held with
|
|
@@ -756,6 +760,10 @@ static void soc_resume_deferred(struct work_struct *work)
|
|
|
|
|
|
/* userspace can access us now we are back as we were before */
|
|
/* userspace can access us now we are back as we were before */
|
|
snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D0);
|
|
snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D0);
|
|
|
|
+
|
|
|
|
+ /* Recheck all analogue paths too */
|
|
|
|
+ dapm_mark_io_dirty(&card->dapm);
|
|
|
|
+ snd_soc_dapm_sync(&card->dapm);
|
|
}
|
|
}
|
|
|
|
|
|
/* powers up audio subsystem after a suspend */
|
|
/* powers up audio subsystem after a suspend */
|