return retval;
}
card = get_capi_ctr_by_nr(ldef.contr);
+ card = capi_ctr_get(card);
if (!card)
return -ESRCH;
if (card->driver->load_firmware == 0) {
if (retval) {
card->cardstate = CARD_DETECTED;
+ capi_ctr_put(card);
return retval;
}
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(HZ/10); /* 0.1 sec */
- if (signal_pending(current))
+ if (signal_pending(current)) {
+ capi_ctr_put(card);
return -EINTR;
+ }
}
+ capi_ctr_put(card);
return 0;
case AVMB1_RESETCARD:
free_irq(card->irq, card);
release_region(card->port, AVMB1_PORTLEN);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
avmcard *card;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "b1isa: no memory.\n");
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
avmctrl_info *cinfo;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
release_region(card->port, AVMB1_PORTLEN);
ctrl->driverdata = 0;
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
avmctrl_info *cinfo;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
ctrl->driverdata = 0;
avmcard_dma_free(card->dma);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
struct capi_driver *driverv4 = &b1pciv4_driver;
#endif
char *p;
- int ncards;
+ int retval;
MOD_INC_USE_COUNT;
attach_capi_driver(driverv4);
#endif
- ncards = pci_register_driver(&b1pci_pci_driver);
- if (ncards) {
- printk(KERN_INFO "%s: %d B1-PCI card(s) detected\n",
- driver->name, ncards);
- MOD_DEC_USE_COUNT;
- return 0;
- }
- printk(KERN_ERR "%s: NO B1-PCI card detected\n", driver->name);
- pci_unregister_driver(&b1pci_pci_driver);
+ retval = pci_module_init(&b1pci_pci_driver);
+ if (retval < 0)
+ goto err;
+
+ printk(KERN_INFO "%s: %d B1-PCI card(s) detected\n",
+ driver->name, retval);
+ retval = 0;
+ goto out;
+
+ err:
detach_capi_driver(driver);
#ifdef CONFIG_ISDN_DRV_AVMB1_B1PCIV4
detach_capi_driver(driverv4);
#endif
+ out:
MOD_DEC_USE_COUNT;
return -ENODEV;
}
detach_capi_ctr(ctrl);
free_irq(card->irq, card);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
char *cardname;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
static void __exit b1pcmcia_exit(void)
{
- detach_capi_driver(&b1pcmcia_driver);
+ detach_capi_driver(&b1pcmcia_driver);
}
module_init(b1pcmcia_init);
ctrl->driverdata = 0;
avmcard_dma_free(card->dma);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
int retval;
int i;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(nr_controllers);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
add_card: 0, /* no add_card function */
};
-static int c4_attach_driver (struct capi_driver * driver)
+static void c4_attach_driver (struct capi_driver * driver)
{
char *p;
if ((p = strchr(revision, ':')) != 0 && p[1]) {
printk(KERN_INFO "%s: revision %s\n", driver->name, driver->revision);
attach_capi_driver(driver);
- return 0;
}
static int __devinit c4_probe(struct pci_dev *dev,
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;
- }
+ c4_attach_driver (&c4_driver);
+ c4_attach_driver (&c2_driver);
- retval = c4_attach_driver (&c2_driver);
- if (retval) {
- MOD_DEC_USE_COUNT;
- return retval;
- }
+ retval = pci_module_init(&c4_pci_driver);
+ if (retval < 0)
+ goto err;
- 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);
+ printk(KERN_INFO "%s: %d C4/C2 card(s) detected\n",
+ c4_driver.name, retval);
+
+ retval = 0;
+ goto out;
+
+ err:
detach_capi_driver(&c2_driver);
+ detach_capi_driver(&c4_driver);
+ out:
MOD_DEC_USE_COUNT;
- return -ENODEV;
+ return retval;
}
static void __exit c4_exit(void)
free_irq(card->irq, card);
release_region(card->port, AVMB1_PORTLEN);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
avmcard *card;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
avmctrl_info *cinfo;
int retval;
- MOD_INC_USE_COUNT;
-
card = b1_alloc_card(1);
if (!card) {
printk(KERN_WARNING "%s: no memory.\n", driver->name);
err_free:
b1_free_card(card);
err:
- MOD_DEC_USE_COUNT;
return retval;
}
ctrl->driverdata = 0;
avmcard_dma_free(card->dma);
b1_free_card(card);
-
- MOD_DEC_USE_COUNT;
}
/* ------------------------------------------------------------- */
{
struct capi_driver *driver = &t1pci_driver;
char *p;
- int ncards;
+ int retval;
MOD_INC_USE_COUNT;
attach_capi_driver(&t1pci_driver);
- ncards = pci_register_driver(&t1pci_pci_driver);
- if (ncards) {
- printk(KERN_INFO "%s: %d T1-PCI card(s) detected\n",
- driver->name, ncards);
- MOD_DEC_USE_COUNT;
- return 0;
- }
- printk(KERN_ERR "%s: NO T1-PCI card detected\n", driver->name);
- pci_unregister_driver(&t1pci_pci_driver);
+ retval = pci_register_driver(&t1pci_pci_driver);
+ if (retval < 0)
+ goto err;
+
+ printk(KERN_INFO "%s: %d T1-PCI card(s) detected\n",
+ driver->name, retval);
+ retval = 0;
+ goto out;
+
+ err:
detach_capi_driver(&t1pci_driver);
+ out:
MOD_DEC_USE_COUNT;
- return -ENODEV;
+ return retval;
}
static void __exit t1pci_exit(void)