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; }
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; }