diff options
Diffstat (limited to 'sound/pci/cs46xx/cs46xx_lib.c')
| -rw-r--r-- | sound/pci/cs46xx/cs46xx_lib.c | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c index 1be96ead424..3f99a5e8528 100644 --- a/sound/pci/cs46xx/cs46xx_lib.c +++ b/sound/pci/cs46xx/cs46xx_lib.c @@ -2238,11 +2238,11 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97)  	/* set the desired CODEC mode */  	if (ac97->num == CS46XX_PRIMARY_CODEC_INDEX) { -		snd_printdd("cs46xx: CODOEC1 mode %04x\n",0x0); -		snd_cs46xx_ac97_write(ac97,AC97_CSR_ACMODE,0x0); +		snd_printdd("cs46xx: CODEC1 mode %04x\n", 0x0); +		snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x0);  	} else if (ac97->num == CS46XX_SECONDARY_CODEC_INDEX) { -		snd_printdd("cs46xx: CODOEC2 mode %04x\n",0x3); -		snd_cs46xx_ac97_write(ac97,AC97_CSR_ACMODE,0x3); +		snd_printdd("cs46xx: CODEC2 mode %04x\n", 0x3); +		snd_cs46xx_ac97_write(ac97, AC97_CSR_ACMODE, 0x3);  	} else {  		snd_BUG(); /* should never happen ... */  	} @@ -2266,7 +2266,7 @@ static void snd_cs46xx_codec_reset (struct snd_ac97 * ac97)  			return;  		/* test if we can write to the record gain volume register */ -		snd_ac97_write_cache(ac97, AC97_REC_GAIN, 0x8a05); +		snd_ac97_write(ac97, AC97_REC_GAIN, 0x8a05);  		if ((err = snd_ac97_read(ac97, AC97_REC_GAIN)) == 0x8a05)  			return; @@ -3597,7 +3597,7 @@ static struct cs_card_type __devinitdata cards[] = {  #ifdef CONFIG_PM  static unsigned int saved_regs[] = {  	BA0_ACOSV, -	BA0_ASER_FADDR, +	/*BA0_ASER_FADDR,*/  	BA0_ASER_MASTER,  	BA1_PVOL,  	BA1_CVOL, @@ -3644,6 +3644,7 @@ int snd_cs46xx_resume(struct pci_dev *pci)  #ifdef CONFIG_SND_CS46XX_NEW_DSP  	int i;  #endif +	unsigned int tmp;  	pci_set_power_state(pci, PCI_D0);  	pci_restore_state(pci); @@ -3685,6 +3686,15 @@ int snd_cs46xx_resume(struct pci_dev *pci)  	snd_ac97_resume(chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]);  	snd_ac97_resume(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]); +	/* +         *  Stop capture DMA. +	 */ +	tmp = snd_cs46xx_peek(chip, BA1_CCTL); +	chip->capt.ctl = tmp & 0x0000ffff; +	snd_cs46xx_poke(chip, BA1_CCTL, tmp & 0xffff0000); + +	mdelay(5); +  	/* reset playback/capture */  	snd_cs46xx_set_play_sample_rate(chip, 8000);  	snd_cs46xx_set_capture_sample_rate(chip, 8000);  |