]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/pci/emu10k1/emu10k1_main.c
[ALSA] Remove IRQF_DISABLED for shared PCI irqs
[karo-tx-linux.git] / sound / pci / emu10k1 / emu10k1_main.c
index 79f24cdf5fbf0b121b6c7564325d8983e89e86d1..972ec40d8166ce3d90001a790ac34cabaa7c6048 100644 (file)
@@ -759,7 +759,7 @@ static int snd_emu10k1_free(struct snd_emu10k1 *emu)
        free_pm_buffer(emu);
 #endif
        if (emu->irq >= 0)
-               free_irq(emu->irq, (void *)emu);
+               free_irq(emu->irq, emu);
        if (emu->port)
                pci_release_regions(emu->pci);
        if (emu->card_capabilities->ca0151_chip) /* P16V */     
@@ -927,6 +927,7 @@ static struct snd_emu_chip_details emu_chip_details[] = {
         .ca0151_chip = 1,
         .spk71 = 1,
         .spdif_bug = 1,
+        .adc_1361t = 1,  /* 24 bit capture instead of 16bit */
         .ac97_chip = 1} ,
        {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10051102,
         .driver = "Audigy2", .name = "Audigy 2 EX [1005]", 
@@ -955,6 +956,7 @@ static struct snd_emu_chip_details emu_chip_details[] = {
         .ca0151_chip = 1,
         .spk71 = 1,
         .spdif_bug = 1,
+        .adc_1361t = 1,  /* 24 bit capture instead of 16bit. Fixes ALSA bug#324 */
         .ac97_chip = 1} ,
        {.vendor = 0x1102, .device = 0x0004, .revision = 0x04,
         .driver = "Audigy2", .name = "Audigy 2 [Unknown]",
@@ -1244,7 +1246,8 @@ int __devinit snd_emu10k1_create(struct snd_card *card,
        }
        emu->port = pci_resource_start(pci, 0);
 
-       if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_DISABLED|IRQF_SHARED, "EMU10K1", (void *)emu)) {
+       if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_SHARED,
+                       "EMU10K1", emu)) {
                err = -EBUSY;
                goto error;
        }
@@ -1460,8 +1463,8 @@ void snd_emu10k1_resume_regs(struct snd_emu10k1 *emu)
 
        /* resore for spdif */
        if (emu->audigy)
-               outl(emu->port + A_IOCFG, emu->saved_a_iocfg);
-       outl(emu->port + HCFG, emu->saved_hcfg);
+               outl(emu->saved_a_iocfg, emu->port + A_IOCFG);
+       outl(emu->saved_hcfg, emu->port + HCFG);
 
        val = emu->saved_ptr;
        for (reg = saved_regs; *reg != 0xff; reg++)