aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/sgiioc4.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/pci/sgiioc4.c')
-rw-r--r--drivers/ide/pci/sgiioc4.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c
index be73acb2080d..c79ff5b41088 100644
--- a/drivers/ide/pci/sgiioc4.c
+++ b/drivers/ide/pci/sgiioc4.c
@@ -588,10 +588,6 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
588 hw_regs_t hw; 588 hw_regs_t hw;
589 struct ide_port_info d = sgiioc4_port_info; 589 struct ide_port_info d = sgiioc4_port_info;
590 590
591 hwif = ide_find_port_slot(&d);
592 if (hwif == NULL)
593 return -ENOMEM;
594
595 /* Get the CmdBlk and CtrlBlk Base Registers */ 591 /* Get the CmdBlk and CtrlBlk Base Registers */
596 bar0 = pci_resource_start(dev, 0); 592 bar0 = pci_resource_start(dev, 0);
597 virt_base = ioremap(bar0, pci_resource_len(dev, 0)); 593 virt_base = ioremap(bar0, pci_resource_len(dev, 0));
@@ -621,6 +617,11 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
621 hw.irq = dev->irq; 617 hw.irq = dev->irq;
622 hw.chipset = ide_pci; 618 hw.chipset = ide_pci;
623 hw.dev = &dev->dev; 619 hw.dev = &dev->dev;
620
621 hwif = ide_find_port_slot(&d);
622 if (hwif == NULL)
623 goto err;
624
624 ide_init_port_hw(hwif, &hw); 625 ide_init_port_hw(hwif, &hw);
625 626
626 /* The IOC4 uses MMIO rather than Port IO. */ 627 /* The IOC4 uses MMIO rather than Port IO. */
@@ -637,6 +638,10 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
637 return -EIO; 638 return -EIO;
638 639
639 return 0; 640 return 0;
641err:
642 release_mem_region(cmd_phys_base, IOC4_CMD_CTL_BLK_SIZE);
643 iounmap(virt_base);
644 return -ENOMEM;
640} 645}
641 646
642static unsigned int __devinit 647static unsigned int __devinit