if (pci_set_dma_mask(pci, 0x3fffffff) < 0 ||
pci_set_consistent_dma_mask(pci, 0x3fffffff) < 0) {
snd_printk("architecture does not support 30bit PCI busmaster DMA\n");
- pci_disable_device(pci);
return -ENXIO;
}
trident = kcalloc(1, sizeof(*trident), GFP_KERNEL);
- if (trident == NULL) {
- pci_disable_device(pci);
+ if (trident == NULL)
return -ENOMEM;
- }
trident->device = (pci->vendor << 16) | pci->device;
trident->card = card;
trident->pci = pci;
if ((err = pci_request_regions(pci, "Trident Audio")) < 0) {
kfree(trident);
- pci_disable_device(pci);
return err;
}
trident->port = pci_resource_start(pci, 0);
return err;
}
- if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, trident, &ops)) < 0) {
+ if ((err = snd_trident_mixer(trident, pcm_spdif_device)) < 0) {
snd_trident_free(trident);
return err;
}
-
- if ((err = snd_trident_mixer(trident, pcm_spdif_device)) < 0)
- return err;
/* initialise synth voices */
for (i = 0; i < 64; i++) {
snd_card_set_pm_callback(card, snd_trident_suspend, snd_trident_resume, trident);
+
snd_trident_proc_init(trident);
+ if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, trident, &ops)) < 0) {
+ snd_trident_free(trident);
+ return err;
+ }
snd_card_set_dev(card, &pci->dev);
*rtrident = trident;
return 0;
snd_trident_free
Description: This routine will free the device specific class for
- the 4DWave card.
+ q the 4DWave card.
Paramters: trident - device specific private data for 4DWave card
if (trident->irq >= 0)
free_irq(trident->irq, (void *)trident);
pci_release_regions(trident->pci);
- pci_disable_device(trident->pci);
kfree(trident);
return 0;
}
case TRIDENT_DEVICE_ID_SI7018:
break;
}
- pci_disable_device(trident->pci);
snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
return 0;
}