static void __exit omap1510_uda1341_exit(void) { printk(__FUNCTION__ "called\n"); unregister_sound_dsp(audio_dev_id); unregister_sound_mixer(mixer_dev_id); l3_detach_client(&uda1341); }
static void __exit audio_dev_exit(void) { free_irq (INT_ATU, NULL); unregister_sound_dsp(audio_state.dev_audio); free_pages((unsigned long)audio_state.buf, get_order(AUDIO_BUFFER_SZ)); }
void ar7240_i2s_cleanup_module(void) { //ar7240_i2s_softc_t *sc = &sc_buf_var; //free_irq(sc->sc_irq, NULL); unregister_sound_dsp(audio_dev_dsp); unregister_sound_mixer(audio_dev_mixer); }
static void __exit dac_audio_exit(void) { free_irq(TIMER1_IRQ, 0); unregister_sound_dsp(device_major); kfree((void *)data_buffer); }
void ar7240_i2s_cleanup_module(void) { ar7240_i2s_softc_t *sc = &sc_buf_var; #ifdef GLZT_I2S_310KERNEL_CLASS /* dev_t devno = MKDEV(ar7240_i2s_major, ar7240_i2s_minor); free_irq(sc->sc_irq, NULL); device_unregister(glzt_i2s_class_dev); class_destroy(glzt_i2s_class); cdev_del(&cdev); unregister_chrdev_region(devno, ar7240_i2s_num); printk("glzt_i2s exit\n"); */ free_irq(sc->sc_irq, NULL); unregister_sound_dsp(audio_dev_dsp); unregister_sound_mixer(audio_dev_mixer); #else printk(KERN_CRIT "unregister\n"); free_irq(sc->sc_irq, NULL); device_unregister(glzt_i2s_class_dev); class_destroy(glzt_i2s_class); unregister_chrdev(ar7240_i2s_major, "ath_i2s"); #endif }
static int h3x00_audio_remove(struct device *_dev) { unregister_sound_dsp(audio_dev_id); unregister_sound_mixer(mixer_dev_id); l3_detach_client(&uda1341); return 0; }
static void __exit sa1111_uda1341_exit(void) { unregister_sound_dsp(audio_dev_id); unregister_sound_mixer(mixer_dev_id); sa1100_free_dma(output_stream.dma_ch); sa1100_free_dma(input_stream.dma_ch); l3_detach_client(&uda1341); }
void sound_unload_audiodev(int dev) { if (dev != -1) { DMAbuf_deinit(dev); audio_devs[dev] = NULL; unregister_sound_dsp((dev<<4)+3); } }
static int jornada56x_uda1345_remove(struct device *dev) { unregister_sound_dsp(audio_dev_id); unregister_sound_mixer(mixer_dev_id); uda1341_detach(uda1341); l3_del_adapter(&l3_jornada56x_adapter); return 0; }
static void __devexit ad1889_remove(struct pci_dev *pcidev) { ad1889_dev_t *dev = pci_get_drvdata(pcidev); if (dev == NULL) return; unregister_sound_mixer(dev->ac97_codec->dev_mixer); unregister_sound_dsp(dev->dev_audio); free_irq(pcidev->irq, dev); release_mem_region(dev->regbase, AD_DSIOMEMSIZE); /* any hw programming needed? */ ad1889_free_dev(dev); }
static void __devexit emu10k1_remove(struct pci_dev *pci_dev) { #if LINUX_VERSION_CODE > 0x020320 struct emu10k1_card *card = pci_dev->driver_data; #else struct emu10k1_card *card = list_entry(emu10k1_devs.next, struct emu10k1_card, list); #endif midi_exit(card); audio_exit(card); emu10k1_exit(card); unregister_sound_midi(card->midi_num); unregister_sound_mixer(card->mixer_num); unregister_sound_dsp(card->audio2_num); unregister_sound_dsp(card->audio1_num); free_irq(card->irq, card); release_region(card->iobase, EMU10K1_EXTENT); list_del(&card->list); kfree(card); return; }
static int __init hostaudio_init_module(void) { printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", dsp, mixer); module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); if(module_data.dev_audio < 0){ printk(KERN_ERR "hostaudio: couldn't register DSP device!\n"); return -ENODEV; } module_data.dev_mixer = register_sound_mixer(&hostmixer_fops, -1); if(module_data.dev_mixer < 0){ printk(KERN_ERR "hostmixer: couldn't register mixer " "device!\n"); unregister_sound_dsp(module_data.dev_audio); return -ENODEV; } return 0; }
static int __devinit ad1889_probe(struct pci_dev *pcidev, const struct pci_device_id *ent) { int err; ad1889_dev_t *dev; unsigned long bar; struct proc_dir_entry *proc_root = NULL; if ((err = pci_enable_device(pcidev)) != 0) { printk(KERN_ERR DEVNAME ": pci_enable_device failed\n"); return err; } pci_set_master(pcidev); if ((dev = ad1889_alloc_dev(pcidev)) == NULL) { printk(KERN_ERR DEVNAME ": cannot allocate memory for device\n"); return -ENOMEM; } pci_set_drvdata(pcidev, dev); bar = pci_resource_start(pcidev, 0); if (!(pci_resource_flags(pcidev, 0) & IORESOURCE_MEM)) { printk(KERN_ERR DEVNAME ": memory region not assigned\n"); goto err_free_mem; } if (request_irq(pcidev->irq, ad1889_interrupt, SA_SHIRQ, DEVNAME, dev) != 0) { printk(KERN_ERR DEVNAME ": unable to request interrupt\n"); goto err_free_mem; } request_mem_region(bar, AD_DSIOMEMSIZE, DEVNAME); dev->regbase = (unsigned long)ioremap_nocache(bar, AD_DSIOMEMSIZE); printk(KERN_INFO DEVNAME ": %s at 0x%lx IRQ %d\n", (char *)ent->driver_data, dev->regbase, pcidev->irq); if (ad1889_aclink_reset(pcidev) != 0) goto err_free_mem; /* register /dev/dsp */ if ((dev->dev_audio = register_sound_dsp(&ad1889_fops, -1)) < 0) { printk(KERN_ERR DEVNAME ": cannot register /dev/dsp\n"); goto err_free_irq; } if ((err = ad1889_ac97_init(dev, 0)) != 0) goto err_free_dsp; if (((proc_root = proc_mkdir("driver/ad1889", 0)) == NULL) || create_proc_read_entry("ac97", S_IFREG|S_IRUGO, proc_root, ac97_read_proc, dev->ac97_codec) == NULL || create_proc_read_entry("info", S_IFREG|S_IRUGO, proc_root, ad1889_read_proc, dev) == NULL) goto err_free_dsp; ad1889_initcfg(dev); //DBG(DEVNAME ": Driver initialization done!\n"); ad1889_dev = dev; return 0; err_free_dsp: unregister_sound_dsp(dev->dev_audio); err_free_irq: free_irq(pcidev->irq, dev); err_free_mem: ad1889_free_dev(dev); pci_set_drvdata(pcidev, 0); return -ENODEV; }
/* Driver initialization routine */ static int __devinit emu10k1_probe(struct pci_dev *pci_dev, const struct pci_device_id *pci_id) { struct emu10k1_card *card; if ((card = kmalloc(sizeof(struct emu10k1_card), GFP_KERNEL)) == NULL) { printk(KERN_ERR "emu10k1: out of memory\n"); return -ENOMEM; } memset(card, 0, sizeof(struct emu10k1_card)); #if LINUX_VERSION_CODE > 0x020320 if (!pci_dma_supported(pci_dev, EMU10K1_DMA_MASK)) { printk(KERN_ERR "emu10k1: architecture does not support 32bit PCI busmaster DMA\n"); kfree(card); return -ENODEV; } if (pci_enable_device(pci_dev)) { printk(KERN_ERR "emu10k1: couldn't enable device\n"); kfree(card); return -ENODEV; } pci_set_master(pci_dev); card->iobase = pci_dev->resource[0].start; if (request_region(card->iobase, EMU10K1_EXTENT, card_names[pci_id->driver_data]) == NULL) { printk(KERN_ERR "emu10k1: IO space in use\n"); kfree(card); return -ENODEV; } pci_dev->driver_data = card; pci_dev->dma_mask = EMU10K1_DMA_MASK; #else pci_set_master(pci_dev); card->iobase = pci_dev->base_address[0] & PCI_BASE_ADDRESS_IO_MASK; if (check_region(card->iobase, EMU10K1_EXTENT)) { printk(KERN_ERR "emu10k1: IO space in use\n"); kfree(card); return -ENODEV; } request_region(card->iobase, EMU10K1_EXTENT, card_names[pci_id->driver_data]); #endif card->irq = pci_dev->irq; card->pci_dev = pci_dev; /* Reserve IRQ Line */ if (request_irq(card->irq, emu10k1_interrupt, SA_SHIRQ, card_names[pci_id->driver_data], card)) { printk(KERN_ERR "emu10k1: IRQ in use\n"); goto err_irq; } pci_read_config_byte(pci_dev, PCI_REVISION_ID, &card->chiprev); printk(KERN_INFO "emu10k1: %s rev %d found at IO 0x%04lx, IRQ %d\n", card_names[pci_id->driver_data], card->chiprev, card->iobase, card->irq); spin_lock_init(&card->lock); card->mixeraddx = card->iobase + AC97DATA; init_MUTEX(&card->open_sem); card->open_mode = 0; init_waitqueue_head(&card->open_wait); /* Register devices */ if ((card->audio1_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register first audio device!\n"); goto err_dev0; } if ((card->audio2_num = register_sound_dsp(&emu10k1_audio_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register second audio device!\n"); goto err_dev1; } if ((card->mixer_num = register_sound_mixer(&emu10k1_mixer_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register mixer device!\n"); goto err_dev2; } if ((card->midi_num = register_sound_midi(&emu10k1_midi_fops, -1)) < 0) { printk(KERN_ERR "emu10k1: cannot register midi device!\n"); goto err_dev3; } if (emu10k1_init(card) != CTSTATUS_SUCCESS) { printk(KERN_ERR "emu10k1: cannot initialize device!\n"); goto err_emu10k1_init; } if (audio_init(card) != CTSTATUS_SUCCESS) { printk(KERN_ERR "emu10k1: cannot initialize audio!\n"); goto err_audio_init; } if (midi_init(card) != CTSTATUS_SUCCESS) { printk(KERN_ERR "emu10k1: cannot initialize midi!\n"); goto err_midi_init; } mixer_init(card); DPD(2, "Hardware initialized. TRAM allocated: %u bytes\n", (unsigned int) card->tmemsize); list_add(&card->list, &emu10k1_devs); return 0; err_midi_init: audio_exit(card); err_audio_init: emu10k1_exit(card); err_emu10k1_init: unregister_sound_midi(card->midi_num); err_dev3: unregister_sound_mixer(card->mixer_num); err_dev2: unregister_sound_dsp(card->audio2_num); err_dev1: unregister_sound_dsp(card->audio1_num); err_dev0: free_irq(card->irq, card); err_irq: release_region(card->iobase, EMU10K1_EXTENT); kfree(card); return -ENODEV; }
static int sa1100ssp_audio_remove(struct device *_dev) { unregister_sound_dsp(audio_dev_id); return 0; }
static void __exit assabet_uda1341_exit(void) { unregister_sound_dsp(audio_dev_id); unregister_sound_mixer(mixer_dev_id); l3_detach_client(&uda1341); }
static void __exit hostaudio_cleanup_module (void) { unregister_sound_mixer(module_data.dev_mixer); unregister_sound_dsp(module_data.dev_audio); }