diff options
Diffstat (limited to 'sound/isa/wss')
| -rw-r--r-- | sound/isa/wss/wss_lib.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/isa/wss/wss_lib.c b/sound/isa/wss/wss_lib.c index 9191b32d913..360b08b03e1 100644 --- a/sound/isa/wss/wss_lib.c +++ b/sound/isa/wss/wss_lib.c @@ -30,6 +30,7 @@  #include <linux/interrupt.h>  #include <linux/slab.h>  #include <linux/ioport.h> +#include <linux/module.h>  #include <sound/core.h>  #include <sound/wss.h>  #include <sound/pcm_params.h> @@ -424,7 +425,7 @@ void snd_wss_mce_down(struct snd_wss *chip)  	/*  	 * Wait for (possible -- during init auto-calibration may not be set) -	 * calibration process to start. Needs upto 5 sample periods on AD1848 +	 * calibration process to start. Needs up to 5 sample periods on AD1848  	 * which at the slowest possible rate of 5.5125 kHz means 907 us.  	 */  	msleep(1); @@ -1455,7 +1456,6 @@ static struct snd_pcm_hardware snd_wss_playback =  {  	.info =			(SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |  				 SNDRV_PCM_INFO_MMAP_VALID | -				 SNDRV_PCM_INFO_RESUME |  				 SNDRV_PCM_INFO_SYNC_START),  	.formats =		(SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_IMA_ADPCM |  				 SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE), @@ -1656,6 +1656,10 @@ static void snd_wss_resume(struct snd_wss *chip)  			break;  		}  	} +	/* Yamaha needs this to resume properly */ +	if (chip->hardware == WSS_HW_OPL3SA2) +		snd_wss_out(chip, CS4231_PLAYBK_FORMAT, +			    chip->image[CS4231_PLAYBK_FORMAT]);  	spin_unlock_irqrestore(&chip->reg_lock, flags);  #if 1  	snd_wss_mce_down(chip); @@ -1833,7 +1837,7 @@ int snd_wss_create(struct snd_card *card,  	}  	chip->cport = cport;  	if (!(hwshare & WSS_HWSHARE_IRQ)) -		if (request_irq(irq, snd_wss_interrupt, IRQF_DISABLED, +		if (request_irq(irq, snd_wss_interrupt, 0,  				"WSS", (void *) chip)) {  			snd_printk(KERN_ERR "wss: can't grab IRQ %d\n", irq);  			snd_wss_free(chip);  | 
