static int __devinit c4_probe(struct pci_dev *dev, const struct pci_device_id *ent) { int nr = ent->driver_data; int retval = 0; struct capicardparams param; if (pci_enable_device(dev) < 0) { printk(KERN_ERR "c4: failed to enable AVM-C%d\n", nr); return -ENODEV; } pci_set_master(dev); param.port = pci_resource_start(dev, 1); param.irq = dev->irq; param.membase = pci_resource_start(dev, 0); printk(KERN_INFO "c4: PCI BIOS reports AVM-C%d at i/o %#x, irq %d, mem %#x\n", nr, param.port, param.irq, param.membase); retval = c4_add_card(¶m, dev, nr); if (retval != 0) { printk(KERN_ERR "c4: no AVM-C%d at i/o %#x, irq %d detected, mem %#x\n", nr, param.port, param.irq, param.membase); return -ENODEV; } return 0; }
static int __init search_cards(struct capi_driver * driver, int pci_id, int nr) { struct pci_dev * dev = NULL; int retval = 0; while ((dev = pci_find_subsys( PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, pci_id, dev))) { struct capicardparams param; if (pci_enable_device(dev) < 0) { printk(KERN_ERR "%s: failed to enable AVM-C%d\n", driver->name, nr); continue; } pci_set_master(dev); param.port = pci_resource_start(dev, 1); param.irq = dev->irq; param.membase = pci_resource_start(dev, 0); printk(KERN_INFO "%s: PCI BIOS reports AVM-C%d at i/o %#x, irq %d, mem %#x\n", driver->name, nr, param.port, param.irq, param.membase); retval = c4_add_card(driver, ¶m, nr); if (retval != 0) { printk(KERN_ERR "%s: no AVM-C%d at i/o %#x, irq %d detected, mem %#x\n", driver->name, nr, param.port, param.irq, param.membase); continue; } ncards++; } return retval; }