Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}