aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/sgiioc4.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:57 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:57 -0400
commit48c3c1072651922ed153bcf0a33ea82cf20df390 (patch)
tree92ad23e3869e70731eca99394c08a3bf06b8753e /drivers/ide/pci/sgiioc4.c
parent374e042c3e767ac2e5a40b78529220e0b3de793c (diff)
ide: add struct ide_host (take 3)
* Add struct ide_host which keeps pointers to host's ports. * Add ide_host_alloc[_all]() and ide_host_remove() helpers. * Pass 'struct ide_host *host' instead of 'u8 *idx' to ide_device_add[_all]() and rename it to ide_host_register[_all](). * Convert host drivers and core code to use struct ide_host. * Remove no longer needed ide_find_port(). * Make ide_find_port_slot() static. * Unexport ide_unregister(). v2: * Add missing 'struct ide_host *host' to macide.c. v3: * Fix build problem in pmac.c (s/ide_alloc_host/ide_host_alloc/) (Noticed by Stephen Rothwell). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci/sgiioc4.c')
-rw-r--r--drivers/ide/pci/sgiioc4.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c
index 5598bd5936d9..440f43a86ad3 100644
--- a/drivers/ide/pci/sgiioc4.c
+++ b/drivers/ide/pci/sgiioc4.c
@@ -600,9 +600,8 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
600 unsigned long cmd_base, irqport; 600 unsigned long cmd_base, irqport;
601 unsigned long bar0, cmd_phys_base, ctl; 601 unsigned long bar0, cmd_phys_base, ctl;
602 void __iomem *virt_base; 602 void __iomem *virt_base;
603 ide_hwif_t *hwif; 603 struct ide_host *host;
604 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; 604 hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
605 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
606 struct ide_port_info d = sgiioc4_port_info; 605 struct ide_port_info d = sgiioc4_port_info;
607 606
608 /* Get the CmdBlk and CtrlBlk Base Registers */ 607 /* Get the CmdBlk and CtrlBlk Base Registers */
@@ -635,16 +634,14 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
635 hw.chipset = ide_pci; 634 hw.chipset = ide_pci;
636 hw.dev = &dev->dev; 635 hw.dev = &dev->dev;
637 636
638 hwif = ide_find_port_slot(&d);
639 if (hwif == NULL)
640 goto err;
641
642 /* Initializing chipset IRQ Registers */ 637 /* Initializing chipset IRQ Registers */
643 writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); 638 writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4));
644 639
645 idx[0] = hwif->index; 640 host = ide_host_alloc(&d, hws);
641 if (host == NULL)
642 goto err;
646 643
647 if (ide_device_add(idx, &d, hws)) 644 if (ide_host_register(host, &d, hws))
648 return -EIO; 645 return -EIO;
649 646
650 return 0; 647 return 0;