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; }
void __init rockhopper_init_irq(void) { int i; if(!vr4133_rockhopper) { printk(KERN_ERR "Not a Rockhopper Board \n"); return; } for (i = I8259_IRQ_BASE; i <= I8259_IRQ_LAST; i++) irq_desc[i].chip = &i8259_irq_type; setup_irq(I8259_SLAVE_IRQ, &i8259_slave_cascade); vr41xx_set_irq_trigger(CMBVR41XX_INTC_PIN, TRIGGER_LEVEL, SIGNAL_THROUGH); vr41xx_set_irq_level(CMBVR41XX_INTC_PIN, LEVEL_HIGH); vr41xx_cascade_irq(CMBVR41XX_INTC_IRQ, i8259_get_irq_number); }