aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa')
-rw-r--r--sound/isa/gus/gus_mem.c3
-rw-r--r--sound/isa/opti9xx/opti92x-ad1848.c18
2 files changed, 12 insertions, 9 deletions
diff --git a/sound/isa/gus/gus_mem.c b/sound/isa/gus/gus_mem.c
index 661205c4dcea..af888a022fc0 100644
--- a/sound/isa/gus/gus_mem.c
+++ b/sound/isa/gus/gus_mem.c
@@ -127,7 +127,8 @@ static struct snd_gf1_mem_block *snd_gf1_mem_share(struct snd_gf1_mem * alloc,
127 !share_id[2] && !share_id[3]) 127 !share_id[2] && !share_id[3])
128 return NULL; 128 return NULL;
129 for (block = alloc->first; block; block = block->next) 129 for (block = alloc->first; block; block = block->next)
130 if (!memcmp(share_id, block->share_id, sizeof(share_id))) 130 if (!memcmp(share_id, block->share_id,
131 sizeof(block->share_id)))
131 return block; 132 return block;
132 return NULL; 133 return NULL;
133} 134}
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index b0ea310c87de..a4af53b5c1cf 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -636,10 +636,13 @@ static int __devinit snd_opti93x_mixer(struct snd_wss *chip)
636 636
637static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id) 637static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id)
638{ 638{
639 struct snd_wss *codec = dev_id; 639 struct snd_opti9xx *chip = dev_id;
640 struct snd_opti9xx *chip = codec->card->private_data; 640 struct snd_wss *codec = chip->codec;
641 unsigned char status; 641 unsigned char status;
642 642
643 if (!codec)
644 return IRQ_HANDLED;
645
643 status = snd_opti9xx_read(chip, OPTi9XX_MC_REG(11)); 646 status = snd_opti9xx_read(chip, OPTi9XX_MC_REG(11));
644 if ((status & OPTi93X_IRQ_PLAYBACK) && codec->playback_substream) 647 if ((status & OPTi93X_IRQ_PLAYBACK) && codec->playback_substream)
645 snd_pcm_period_elapsed(codec->playback_substream); 648 snd_pcm_period_elapsed(codec->playback_substream);
@@ -779,10 +782,9 @@ static void snd_card_opti9xx_free(struct snd_card *card)
779 782
780 if (chip) { 783 if (chip) {
781#ifdef OPTi93X 784#ifdef OPTi93X
782 struct snd_wss *codec = chip->codec; 785 if (chip->irq > 0) {
783 if (codec && codec->irq > 0) { 786 disable_irq(chip->irq);
784 disable_irq(codec->irq); 787 free_irq(chip->irq, chip);
785 free_irq(codec->irq, codec);
786 } 788 }
787 release_and_free_resource(chip->res_mc_indir); 789 release_and_free_resource(chip->res_mc_indir);
788#endif 790#endif
@@ -852,9 +854,9 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
852#endif 854#endif
853#ifdef OPTi93X 855#ifdef OPTi93X
854 error = request_irq(irq, snd_opti93x_interrupt, 856 error = request_irq(irq, snd_opti93x_interrupt,
855 IRQF_DISABLED, DEV_NAME" - WSS", codec); 857 IRQF_DISABLED, DEV_NAME" - WSS", chip);
856 if (error < 0) { 858 if (error < 0) {
857 snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", chip->irq); 859 snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", irq);
858 return error; 860 return error;
859 } 861 }
860#endif 862#endif