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

Commit 4ccab3e7 authored by Liam Girdwood's avatar Liam Girdwood Committed by Jaroslav Kysela
Browse files

[ALSA] soc - Ensure PCMs are suspended



This fixes a bug whereby PCMs were not being suspended when the rest of the
audio subsystem was suspended.

Signed-off-by: default avatarLiam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent 3c1c47e0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -447,6 +447,9 @@ struct snd_soc_dai_link {

	/* codec/machine specific init - e.g. add machine controls */
	int (*init)(struct snd_soc_codec *codec);

	/* DAI pcm */
	struct snd_pcm *pcm;
};

/* SoC machine */
+5 −0
Original line number Diff line number Diff line
@@ -645,6 +645,10 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
			dai->dai_ops.digital_mute(dai, 1);
	}

	/* suspend all pcms */
	for (i = 0; i < machine->num_links; i++)
		snd_pcm_suspend_all(machine->dai_link[i].pcm);

	if (machine->suspend_pre)
		machine->suspend_pre(pdev, state);

@@ -879,6 +883,7 @@ static int soc_new_pcm(struct snd_soc_device *socdev,
		return ret;
	}

	dai_link->pcm = pcm;
	pcm->private_data = rtd;
	soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
	soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;