* - OAM
*/
-#define ZATM_COPPER 1
-
#if 0
#define DPRINTK(format,args...) printk(KERN_DEBUG format,##args)
#else
.change_qos = zatm_change_qos,
};
-static int __devinit zatm_init_one(struct pci_dev *pci_dev,
- const struct pci_device_id *ent)
+static int __init zatm_module_init(void)
{
struct atm_dev *dev;
struct zatm_dev *zatm_dev;
- int ret = -ENOMEM;
-
- zatm_dev = (struct zatm_dev *) kmalloc(sizeof(*zatm_dev), GFP_KERNEL);
- if (!zatm_dev) {
- printk(KERN_EMERG "%s: memory shortage\n", DEV_LABEL);
- goto out;
+ int devs,type;
+
+ zatm_dev = (struct zatm_dev *) kmalloc(sizeof(struct zatm_dev),
+ GFP_KERNEL);
+ if (!zatm_dev) return -ENOMEM;
+ devs = 0;
+ for (type = 0; type < 2; type++) {
+ struct pci_dev *pci_dev;
+
+ pci_dev = NULL;
+ while ((pci_dev = pci_find_device(PCI_VENDOR_ID_ZEITNET,type ?
+ PCI_DEVICE_ID_ZEITNET_1225 : PCI_DEVICE_ID_ZEITNET_1221,
+ pci_dev))) {
+ if (pci_enable_device(pci_dev)) break;
+ dev = atm_dev_register(DEV_LABEL,&ops,-1,NULL);
+ if (!dev) break;
+ zatm_dev->pci_dev = pci_dev;
+ dev->dev_data = zatm_dev;
+ zatm_dev->copper = type;
+ if (zatm_init(dev) || zatm_start(dev)) {
+ atm_dev_deregister(dev);
+ break;
+ }
+ zatm_dev->more = zatm_boards;
+ zatm_boards = dev;
+ devs++;
+ zatm_dev = (struct zatm_dev *) kmalloc(sizeof(struct
+ zatm_dev),GFP_KERNEL);
+ if (!zatm_dev) {
+ printk(KERN_EMERG "zatm.c: memory shortage\n");
+ goto out;
+ }
+ }
}
-
- dev = atm_dev_register(DEV_LABEL, &ops, -1, NULL);
- if (!dev)
- goto out_free;
-
- ret = pci_enable_device(pci_dev);
- if (ret < 0)
- goto out_deregister;
-
- ret = pci_request_regions(pci_dev, DEV_LABEL);
- if (ret < 0)
- goto out_disable;
-
- zatm_dev->pci_dev = pci_dev;
- dev = (struct atm_dev *)zatm_dev;
- zatm_dev->copper = (int)ent->driver_data;
- if ((ret = zatm_init(dev)) || (ret = zatm_start(dev)))
- goto out_release;
-
- pci_set_drvdata(pci_dev, dev);
- zatm_dev->more = zatm_boards;
- zatm_boards = dev;
- ret = 0;
out:
- return ret;
-
-out_release:
- pci_release_regions(pci_dev);
-out_disable:
- pci_disable_device(pci_dev);
-out_deregister:
- atm_dev_deregister(dev);
-out_free:
kfree(zatm_dev);
- goto out;
-}
+ return 0;
+}
MODULE_LICENSE("GPL");
-static struct pci_device_id zatm_pci_tbl[] __devinitdata = {
- { PCI_VENDOR_ID_ZEITNET, PCI_DEVICE_ID_ZEITNET_1221,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZATM_COPPER },
- { PCI_VENDOR_ID_ZEITNET, PCI_DEVICE_ID_ZEITNET_1225,
- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
- { 0, }
-};
-MODULE_DEVICE_TABLE(pci, zatm_pci_tbl);
-
-static struct pci_driver zatm_driver = {
- .name = DEV_LABEL,
- .id_table = zatm_pci_tbl,
- .probe = zatm_init_one,
-};
-
-static int __init zatm_init_module(void)
-{
- return pci_module_init(&zatm_driver);
-}
-
-module_init(zatm_init_module);
+module_init(zatm_module_init);
/* module_exit not defined so not unloadable */