ide: set hwif->dev in ide_init_port_hw() (take 2)
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Wed, 16 Jul 2008 18:33:40 +0000 (20:33 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Wed, 16 Jul 2008 18:33:40 +0000 (20:33 +0200)
* Add 'parent' field to hw_regs_t for optional parent device pointer (needed
  by macio PMAC IDE controllers) and set hwif->dev in ide_init_port_hw().

* Update au1xxx-ide.c, sgiioc4.c, pmac.c and setup-pci.c accordingly.

v2:

* Update scc_pata.c.

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide.c
drivers/ide/mips/au1xxx-ide.c
drivers/ide/pci/scc_pata.c
drivers/ide/pci/sgiioc4.c
drivers/ide/ppc/pmac.c
drivers/ide/setup-pci.c
include/linux/ide.h

index b7855a13f0ef7e3f81e2cb5d8de801c788b96a1b..9240888e5efd350e79d4dd601dfd664de98deb6d 100644 (file)
@@ -297,7 +297,8 @@ void ide_init_port_hw(ide_hwif_t *hwif, hw_regs_t *hw)
        memcpy(&hwif->io_ports, &hw->io_ports, sizeof(hwif->io_ports));
        hwif->irq = hw->irq;
        hwif->chipset = hw->chipset;
-       hwif->gendev.parent = hw->dev;
+       hwif->dev = hw->dev;
+       hwif->gendev.parent = hw->parent ? hw->parent : hw->dev;
        hwif->ack_intr = hw->ack_intr;
 }
 EXPORT_SYMBOL_GPL(ide_init_port_hw);
index 1a6c27b324983cc989e4c228b2be6cbd6e9a3027..08c46c36b7e7970341d3a664231b03854d4859e8 100644 (file)
@@ -600,8 +600,6 @@ static int au_ide_probe(struct device *dev)
 
        ide_init_port_hw(hwif, &hw);
 
-       hwif->dev = dev;
-
        /* If the user has selected DDMA assisted copies,
           then set up a few local I/O function entry points 
        */
index 1584ebb6a185b6d8da78fa3b205c909c7d52464e..71bff3131b96f3323216eb558486226ed36a83fb 100644 (file)
@@ -572,7 +572,6 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev,
        hw.dev = &dev->dev;
        hw.chipset = ide_pci;
        ide_init_port_hw(hwif, &hw);
-       hwif->dev = &dev->dev;
 
        idx[0] = hwif->index;
 
index 24513e3dcd6b81c0c1a159a5f5f37200f221268f..af91cc525789ca2634c08f49fe593b13b4b37cb4 100644 (file)
@@ -625,8 +625,6 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
        hw.dev = &dev->dev;
        ide_init_port_hw(hwif, &hw);
 
-       hwif->dev = &dev->dev;
-
        /* The IOC4 uses MMIO rather than Port IO. */
        default_hwif_mmiops(hwif);
 
index cfa103a51b314e5ea8d3faf2425dd3e58c30b3d9..93fb9067c0430f7add87b99fa41f39f31ba0d4c5 100644 (file)
@@ -1148,8 +1148,6 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match)
        base = ioremap(macio_resource_start(mdev, 0), 0x400);
        regbase = (unsigned long) base;
 
-       hwif->dev = &mdev->bus->pdev->dev;
-
        pmif->mdev = mdev;
        pmif->node = mdev->ofdev.node;
        pmif->regbase = regbase;
@@ -1171,7 +1169,8 @@ pmac_ide_macio_attach(struct macio_dev *mdev, const struct of_device_id *match)
        memset(&hw, 0, sizeof(hw));
        pmac_ide_init_ports(&hw, pmif->regbase);
        hw.irq = irq;
-       hw.dev = &mdev->ofdev.dev;
+       hw.dev = &mdev->bus->pdev->dev;
+       hw.parent = &mdev->ofdev.dev;
 
        rc = pmac_ide_setup_device(pmif, hwif, &hw);
        if (rc != 0) {
@@ -1271,7 +1270,6 @@ pmac_ide_pci_attach(struct pci_dev *pdev, const struct pci_device_id *id)
                goto out_free_pmif;
        }
 
-       hwif->dev = &pdev->dev;
        pmif->mdev = NULL;
        pmif->node = np;
 
index abcfb1739d4d3a2089d580a1f7ffe5583ed3ff6a..3dea5a59626e18762f9ff34f825bcee9041611c1 100644 (file)
@@ -346,8 +346,6 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev,
 
        ide_init_port_hw(hwif, &hw);
 
-       hwif->dev = &dev->dev;
-
        return hwif;
 }
 
index 15d5668198a6900b96f5505798696902894392ad..a6a2eccb65268c08d7bd0aea4c187155487a1891 100644 (file)
@@ -171,7 +171,7 @@ typedef struct hw_regs_s {
        int             irq;                    /* our irq number */
        ide_ack_intr_t  *ack_intr;              /* acknowledge interrupt */
        hwif_chipset_t  chipset;
-       struct device   *dev;
+       struct device   *dev, *parent;
 } hw_regs_t;
 
 void ide_init_port_data(struct hwif_s *, unsigned int);