/* Returns 0 on success or negative error code on failure.  */
static int i2o_pci_irq_enable(struct i2o_controller *c)
/* Returns 0 on success or negative error code on failure.  */
static int i2o_pci_irq_enable(struct i2o_controller *c)
{
	struct pci_dev *pdev = c->pdev;
	int rc;
	writel(0xffffffff, c->irq_mask);
	if (pdev->irq) {
		rc = request_irq(pdev->irq, i2o_pci_interrupt, IRQF_SHARED,
				 c->name, c);
		if (rc < 0) {
			printk(KERN_ERR "%s: unable to allocate interrupt %d."
			       "\n", c->name, pdev->irq);
			return rc;
		}
	}
	writel(0x00000000, c->irq_mask);
	printk(KERN_INFO "%s: Installed at IRQ %d\n", c->name, pdev->irq);
	return 0;
}