static int __devinit vrc4173_probe(struct pci_dev *dev, const struct pci_device_id *id) { unsigned long start, flags; int err; err = pci_enable_device(dev); if (err < 0) { printk(KERN_ERR "vrc4173: Failed to enable PCI device, aborting\n"); return err; } pci_set_master(dev); start = pci_resource_start(dev, 0); if (start == 0) { printk(KERN_ERR "vrc4173:No such PCI I/O resource, aborting\n"); return -ENXIO; } flags = pci_resource_flags(dev, 0); if ((flags & IORESOURCE_IO) == 0) { printk(KERN_ERR "vrc4173: No such PCI I/O resource, aborting\n"); return -ENXIO; } err = pci_request_regions(dev, "NEC VRC4173"); if (err < 0) { printk(KERN_ERR "vrc4173: PCI resources are busy, aborting\n"); return err; } set_vrc4173_io_offset(start); vrc4173_cmu_init(); vrc4173_giu_init(); err = vrc4173_icu_init(dev->irq); if (err < 0) { printk(KERN_ERR "vrc4173: Invalid IRQ %d, aborting\n", dev->irq); return err; } err = vr41xx_cascade_irq(dev->irq, vrc4173_get_irq_number); if (err < 0) { printk(KERN_ERR "vrc4173: IRQ resource %d is busy, aborting\n", dev->irq); return err; } printk(KERN_INFO "NEC VRC4173 at 0x%#08lx, IRQ is cascaded to %d\n", start, dev->irq); return 0; }
static int __devinit vrc4173_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { unsigned long start, flags; int err; if ((err = pci_enable_device(pdev)) < 0) { printk(KERN_ERR "vrc4173: failed to enable device -- err=%d\n", err); return err; } pci_set_master(pdev); start = pci_resource_start(pdev, 0); if (!start) { printk(KERN_ERR "vrc4173:No PCI I/O resources, aborting\n"); return -ENODEV; } if (!start || (((flags = pci_resource_flags(pdev, 0)) & IORESOURCE_IO) == 0)) { printk(KERN_ERR "vrc4173: No PCI I/O resources, aborting\n"); return -ENODEV; } if ((err = pci_request_regions(pdev, "NEC VRC4173")) < 0) { printk(KERN_ERR "vrc4173: PCI resources are busy, aborting\n"); return err; } set_vrc4173_io_offset(start); vrc4173_cmu_init(); vrc4173_icu_init(pdev->irq); if ((err = vr41xx_cascade_irq(pdev->irq, vrc4173_get_irq_number)) < 0) { printk(KERN_ERR "vrc4173: IRQ resource %d is busy, aborting\n", pdev->irq); return err; } printk(KERN_INFO "NEC VRC4173 at 0x%#08lx, IRQ is cascaded to %d\n", start, pdev->irq); return 0; }