static void airport_detach(dldwd_priv_t *priv) { dldwd_card_t* card = (dldwd_card_t *)priv->card; priv->hw_ready = 0; /* Unregister proc entry */ dldwd_proc_dev_cleanup(priv); #ifdef CONFIG_PMAC_PBOOK pmu_unregister_sleep_notifier(&airport_sleep_notifier); #endif if (card->ndev_registered) unregister_netdev(&priv->ndev); card->ndev_registered = 0; if (card->irq_requested) free_irq(priv->ndev.irq, priv); card->irq_requested = 0; // FIXME // if (ndev->base_addr) // iounmap(ndev->base_addr + _IO_BASE); // ndev->base_addr = 0; feature_set_airport_power(card->node, 0); current->state = TASK_UNINTERRUPTIBLE; schedule_timeout(HZ); kfree(card); } /* airport_detach */
static void airport_detach(struct net_device *dev) { struct orinoco_private *priv = dev->priv; struct airport *card = priv->card; #ifdef CONFIG_PMAC_PBOOK pmu_unregister_sleep_notifier(&airport_sleep_notifier); #endif if (card->ndev_registered) unregister_netdev(dev); card->ndev_registered = 0; if (card->irq_requested) free_irq(dev->irq, priv); card->irq_requested = 0; if (card->vaddr) iounmap(card->vaddr); card->vaddr = 0; dev->base_addr = 0; release_OF_resource(card->node, 0); pmac_call_feature(PMAC_FTR_AIRPORT_ENABLE, card->node, 0, 0); current->state = TASK_UNINTERRUPTIBLE; schedule_timeout(HZ); kfree(dev); } /* airport_detach */
static void __exit apm_emu_exit(void) { pmu_unregister_sleep_notifier(&apm_sleep_notifier); misc_deregister(&apm_device); remove_proc_entry("apm", NULL); printk(KERN_INFO "apm_emu: APM Emulation removed.\n"); }
static void __devexit chipsfb_remove(struct pci_dev *dp) { struct fb_info *p = pci_get_drvdata(dp); if (p != &chipsfb_info || p->screen_base == NULL) return; unregister_framebuffer(p); iounmap(p->screen_base); p->screen_base = NULL; release_mem_region(pci_resource_start(dp, 0), pci_resource_len(dp, 0)); #ifdef CONFIG_PMAC_PBOOK pmu_unregister_sleep_notifier(&chips_sleep_notifier); #endif /* CONFIG_PMAC_PBOOK */ }