static int __init c4_init(void) { int retval; int ncards; MOD_INC_USE_COUNT; retval = c4_attach_driver (&c4_driver); if (retval) { MOD_DEC_USE_COUNT; return retval; } retval = c4_attach_driver (&c2_driver); if (retval) { MOD_DEC_USE_COUNT; return retval; } ncards = pci_register_driver(&c4_pci_driver); if (ncards) { printk(KERN_INFO "%s: %d C4/C2 card(s) detected\n", c4_driver.name, ncards); MOD_DEC_USE_COUNT; return 0; } printk(KERN_ERR "%s: NO C4/C2 card detected\n", c4_driver.name); pci_unregister_driver(&c4_pci_driver); detach_capi_driver(&c4_driver); detach_capi_driver(&c2_driver); MOD_DEC_USE_COUNT; return -ENODEV; }
void hycapi_cleanup(void) { struct capi_driver *driver; driver = &hycapi_driver; if (!hy_di) { printk(KERN_ERR "HYSDN: no capi-driver to detach (?)\n"); return; } printk(KERN_NOTICE "HYSDN: Detaching capi-driver\n"); detach_capi_driver(driver); hy_di = 0; return; }
static int __init c4_init(void) { int retval; MOD_INC_USE_COUNT; retval = c4_attach_driver (&c4_driver); if (retval) { MOD_DEC_USE_COUNT; return retval; } retval = c4_attach_driver (&c2_driver); if (retval) { MOD_DEC_USE_COUNT; return retval; } retval = search_cards(&c4_driver, PCI_DEVICE_ID_AVM_C4, 4); if (retval && ncards == 0) { detach_capi_driver(&c2_driver); detach_capi_driver(&c4_driver); MOD_DEC_USE_COUNT; return retval; } retval = search_cards(&c2_driver, PCI_DEVICE_ID_AVM_C2, 2); if (retval && ncards == 0) { detach_capi_driver(&c2_driver); detach_capi_driver(&c4_driver); MOD_DEC_USE_COUNT; return retval; } if (ncards) { printk(KERN_INFO "%s: %d C4/C2 card(s) detected\n", c4_driver.name, ncards); MOD_DEC_USE_COUNT; return 0; } printk(KERN_ERR "%s: NO C4/C2 card detected\n", c4_driver.name); detach_capi_driver(&c4_driver); detach_capi_driver(&c2_driver); MOD_DEC_USE_COUNT; return -ENODEV; }
static void __exit c4_exit(void) { pci_unregister_driver(&c4_pci_driver); detach_capi_driver(&c2_driver); detach_capi_driver(&c4_driver); }
static void __exit b1isa_exit(void) { detach_capi_driver(&b1isa_driver); }
static void __exit c4_exit(void) { detach_capi_driver(&c2_driver); detach_capi_driver(&c4_driver); }