ASoC: rockchip: i2s: add default values for registers
[deliverable/linux.git] / sound / soc / soc-pcm.c
index 2a2ca2209656d70d4c3cb06176ac7e8d7096ebd6..e898b427be7ee34961451b2d8b177848415436ed 100644 (file)
@@ -599,10 +599,15 @@ platform_err:
 out:
        mutex_unlock(&rtd->pcm_mutex);
 
-       pm_runtime_put(platform->dev);
-       for (i = 0; i < rtd->num_codecs; i++)
-               pm_runtime_put(rtd->codec_dais[i]->dev);
-       pm_runtime_put(cpu_dai->dev);
+       pm_runtime_mark_last_busy(platform->dev);
+       pm_runtime_put_autosuspend(platform->dev);
+       for (i = 0; i < rtd->num_codecs; i++) {
+               pm_runtime_mark_last_busy(rtd->codec_dais[i]->dev);
+               pm_runtime_put_autosuspend(rtd->codec_dais[i]->dev);
+       }
+
+       pm_runtime_mark_last_busy(cpu_dai->dev);
+       pm_runtime_put_autosuspend(cpu_dai->dev);
        for (i = 0; i < rtd->num_codecs; i++) {
                if (!rtd->codec_dais[i]->active)
                        pinctrl_pm_select_sleep_state(rtd->codec_dais[i]->dev);
@@ -706,10 +711,17 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
 
        mutex_unlock(&rtd->pcm_mutex);
 
-       pm_runtime_put(platform->dev);
-       for (i = 0; i < rtd->num_codecs; i++)
-               pm_runtime_put(rtd->codec_dais[i]->dev);
-       pm_runtime_put(cpu_dai->dev);
+       pm_runtime_mark_last_busy(platform->dev);
+       pm_runtime_put_autosuspend(platform->dev);
+
+       for (i = 0; i < rtd->num_codecs; i++) {
+               pm_runtime_mark_last_busy(rtd->codec_dais[i]->dev);
+               pm_runtime_put_autosuspend(rtd->codec_dais[i]->dev);
+       }
+
+       pm_runtime_mark_last_busy(cpu_dai->dev);
+       pm_runtime_put_autosuspend(cpu_dai->dev);
+
        for (i = 0; i < rtd->num_codecs; i++) {
                if (!rtd->codec_dais[i]->active)
                        pinctrl_pm_select_sleep_state(rtd->codec_dais[i]->dev);
This page took 0.025054 seconds and 5 git commands to generate.