diff options
Diffstat (limited to 'sound/isa')
-rw-r--r-- | sound/isa/gus/gus_mem.c | 3 | ||||
-rw-r--r-- | sound/isa/opti9xx/opti92x-ad1848.c | 18 |
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 | ||
637 | static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id) | 637 | static 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 |