Merge branch 'asoc-5.2' into asoc-5.3
[linux-2.6-microblaze.git] / sound / soc / sof / pcm.c
index 6499688..6dc5f97 100644 (file)
@@ -211,8 +211,8 @@ static int sof_pcm_hw_params(struct snd_pcm_substream *substream,
        /* save pcm hw_params */
        memcpy(&spcm->params[substream->stream], params, sizeof(*params));
 
-       INIT_WORK(&spcm->stream[substream->stream].period_elapsed_work,
-                 sof_pcm_period_elapsed_work);
+       /* clear hw_params_upon_resume flag */
+       spcm->hw_params_upon_resume[substream->stream] = 0;
 
        return ret;
 }
@@ -416,7 +416,6 @@ static int sof_pcm_open(struct snd_pcm_substream *substream)
        struct snd_sof_pcm *spcm;
        struct snd_soc_tplg_stream_caps *caps;
        int ret;
-       int err;
 
        /* nothing to do for BE */
        if (rtd->dai_link->no_pcm)
@@ -429,19 +428,11 @@ static int sof_pcm_open(struct snd_pcm_substream *substream)
        dev_dbg(sdev->dev, "pcm: open stream %d dir %d\n", spcm->pcm.pcm_id,
                substream->stream);
 
-       /* clear hw_params_upon_resume flag */
-       spcm->hw_params_upon_resume[substream->stream] = 0;
+       INIT_WORK(&spcm->stream[substream->stream].period_elapsed_work,
+                 sof_pcm_period_elapsed_work);
 
        caps = &spcm->pcm.caps[substream->stream];
 
-       ret = pm_runtime_get_sync(sdev->dev);
-       if (ret < 0) {
-               dev_err(sdev->dev, "error: pcm open failed to resume %d\n",
-                       ret);
-               pm_runtime_put_noidle(sdev->dev);
-               return ret;
-       }
-
        /* set any runtime constraints based on topology */
        snd_pcm_hw_constraint_step(substream->runtime, 0,
                                   SNDRV_PCM_HW_PARAM_BUFFER_BYTES,
@@ -485,17 +476,8 @@ static int sof_pcm_open(struct snd_pcm_substream *substream)
        spcm->stream[substream->stream].substream = substream;
 
        ret = snd_sof_pcm_platform_open(sdev, substream);
-       if (ret < 0) {
-               dev_err(sdev->dev, "error: pcm open failed %d\n",
-                       ret);
-
-               pm_runtime_mark_last_busy(sdev->dev);
-
-               err = pm_runtime_put_autosuspend(sdev->dev);
-               if (err < 0)
-                       dev_err(sdev->dev, "error: pcm close failed to idle %d\n",
-                               err);
-       }
+       if (ret < 0)
+               dev_err(sdev->dev, "error: pcm open failed %d\n", ret);
 
        return ret;
 }
@@ -530,13 +512,6 @@ static int sof_pcm_close(struct snd_pcm_substream *substream)
                 */
        }
 
-       pm_runtime_mark_last_busy(sdev->dev);
-
-       err = pm_runtime_put_autosuspend(sdev->dev);
-       if (err < 0)
-               dev_err(sdev->dev, "error: pcm close failed to idle %d\n",
-                       err);
-
        return 0;
 }