snd-cs46xx: Fix suspend for all channels
PATCH 1/1 snd-cs46xx: Fix suspend for all channels
snd_cs46xx_suspend() is missing snd_pcm_suspend_all calls for pcm_rear, pcm_center_lfe and pcm_iec958.
There's also a copy/paste bug in snd_cs46xx_pcm_iec958(), overwriting pcm_rear in struct snd_cs46xx, leaving pcm_iec958 unused.
Fix all this to allow all channels to survive suspend/resume.
Signed-off-by Ondrej Zary <[email protected]>
--- sound/pci/cs46xx/cs46xx_lib.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
sound/pci/cs46xx/cs46xx_lib.c +6 -1
@@ -1864,7 +1864,7 @@ int snd_cs46xx_pcm_iec958(struct snd_cs46xx *chip, int device)/* global setup */ pcm->info_flags =0 ;strcpy (pcm->name,"CS46xx - IEC958" ); - chip->pcm_rear = pcm; + chip->pcm_iec958 = pcm;snd_pcm_lib_preallocate_pages_for_all (pcm,SNDRV_DMA_TYPE_DEV ,snd_dma_pci_data (chip->pci),64 *1024 ,256 *1024 );
@@ -3780,6 +3780,11 @@ static int snd_cs46xx_suspend(struct device *dev)snd_power_change_state (card, SNDRV_CTL_POWER_D3hot); chip->in_suspend =1 ;snd_pcm_suspend_all (chip->pcm); +#ifdef CONFIG_SND_CS46XX_NEW_DSP +snd_pcm_suspend_all (chip->pcm_rear); +snd_pcm_suspend_all (chip->pcm_center_lfe); +snd_pcm_suspend_all (chip->pcm_iec958); +#endif // chip->ac97_powerdown = snd_cs46xx_codec_read(chip, AC97_POWER_CONTROL); // chip->ac97_general_purpose = snd_cs46xx_codec_read(chip, BA0_AC97_GENERAL_PURPOSE);
Signature · 1 line
Ondrej Zary
Takashi Iwai
AppliedQuoted 10 lines · Ondrej Zary
snd_cs46xx_suspend()is missingsnd_pcm_suspend_allcalls forpcm_rear,pcm_center_lfeandpcm_iec958.There's also a copy/paste bug in
snd_cs46xx_pcm_iec958(), overwritingpcm_rearin structsnd_cs46xx, leavingpcm_iec958unused.Fix all this to allow all channels to survive suspend/resume.
Signed-off-by Ondrej Zary <[email protected]>
Applied, thanks.
Takashi
Quoted 33 lines
--- sound/pci/cs46xx/cs46xx_lib.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)sound/pci/cs46xx/cs46xx_lib.c +6
-1@@ -1864,7 +1864,7 @@ int snd_cs46xx_pcm_iec958(struct snd_cs46xx *chip, int device)/* global setup */ pcm->info_flags =0 ;strcpy (pcm->name,"CS46xx - IEC958" ); - chip->pcm_rear = pcm; + chip->pcm_iec958 = pcm;snd_pcm_lib_preallocate_pages_for_all (pcm,SNDRV_DMA_TYPE_DEV ,snd_dma_pci_data (chip->pci),64 *1024 ,256 *1024 );@@ -3780,6 +3780,11 @@ static int snd_cs46xx_suspend(struct device *dev)snd_power_change_state (card, SNDRV_CTL_POWER_D3hot); chip->in_suspend =1 ;snd_pcm_suspend_all (chip->pcm); +#ifdef CONFIG_SND_CS46XX_NEW_DSP +snd_pcm_suspend_all (chip->pcm_rear); +snd_pcm_suspend_all (chip->pcm_center_lfe); +snd_pcm_suspend_all (chip->pcm_iec958); +#endif // chip->ac97_powerdown = snd_cs46xx_codec_read(chip, AC97_POWER_CONTROL); // chip->ac97_general_purpose = snd_cs46xx_codec_read(chip, BA0_AC97_GENERAL_PURPOSE); Signature · 1 line
Ondrej Zary