Skip to content

Commit

Permalink
[ALSA] soc - Ensure PCMs are suspended
Browse files Browse the repository at this point in the history
This fixes a bug whereby PCMs were not being suspended when the rest of the
audio subsystem was suspended.

Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
  • Loading branch information
Liam Girdwood authored and Jaroslav Kysela committed Jan 31, 2008
1 parent 3c1c47e commit 4ccab3e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
3 changes: 3 additions & 0 deletions include/sound/soc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
5 changes: 5 additions & 0 deletions sound/soc/soc-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 4ccab3e

Please sign in to comment.