Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 14a2212d authored by Ranjani Sridharan's avatar Ranjani Sridharan Committed by Mark Brown
Browse files

ASoC: SOF: pcm: remove runtime PM calls during pcm open/close



pm_runtime_get_sync()/pm_runtime_put_autosuspend() calls are
already invoked by the ASoC core in soc_pcm_open() and
soc_pcm_close(). So the SOF component driver does not need
to call them again.

Signed-off-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5160217b
Loading
Loading
Loading
Loading
+2 −27
Original line number Diff line number Diff line
@@ -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)
@@ -434,14 +433,6 @@ static int sof_pcm_open(struct snd_pcm_substream *substream)

	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;
}