ide: set hwif->dev in ide_init_port_hw() (take 2)
* 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>
This commit is contained in:
parent
63b51c6d1d
commit
c56c5648a3
|
@ -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));
|
memcpy(&hwif->io_ports, &hw->io_ports, sizeof(hwif->io_ports));
|
||||||
hwif->irq = hw->irq;
|
hwif->irq = hw->irq;
|
||||||
hwif->chipset = hw->chipset;
|
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;
|
hwif->ack_intr = hw->ack_intr;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ide_init_port_hw);
|
EXPORT_SYMBOL_GPL(ide_init_port_hw);
|
||||||
|
|
|
@ -600,8 +600,6 @@ static int au_ide_probe(struct device *dev)
|
||||||
|
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
|
|
||||||
hwif->dev = dev;
|
|
||||||
|
|
||||||
/* If the user has selected DDMA assisted copies,
|
/* If the user has selected DDMA assisted copies,
|
||||||
then set up a few local I/O function entry points
|
then set up a few local I/O function entry points
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -572,7 +572,6 @@ static int scc_ide_setup_pci_device(struct pci_dev *dev,
|
||||||
hw.dev = &dev->dev;
|
hw.dev = &dev->dev;
|
||||||
hw.chipset = ide_pci;
|
hw.chipset = ide_pci;
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
hwif->dev = &dev->dev;
|
|
||||||
|
|
||||||
idx[0] = hwif->index;
|
idx[0] = hwif->index;
|
||||||
|
|
||||||
|
|
|
@ -625,8 +625,6 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
|
||||||
hw.dev = &dev->dev;
|
hw.dev = &dev->dev;
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
|
|
||||||
hwif->dev = &dev->dev;
|
|
||||||
|
|
||||||
/* The IOC4 uses MMIO rather than Port IO. */
|
/* The IOC4 uses MMIO rather than Port IO. */
|
||||||
default_hwif_mmiops(hwif);
|
default_hwif_mmiops(hwif);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
base = ioremap(macio_resource_start(mdev, 0), 0x400);
|
||||||
regbase = (unsigned long) base;
|
regbase = (unsigned long) base;
|
||||||
|
|
||||||
hwif->dev = &mdev->bus->pdev->dev;
|
|
||||||
|
|
||||||
pmif->mdev = mdev;
|
pmif->mdev = mdev;
|
||||||
pmif->node = mdev->ofdev.node;
|
pmif->node = mdev->ofdev.node;
|
||||||
pmif->regbase = regbase;
|
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));
|
memset(&hw, 0, sizeof(hw));
|
||||||
pmac_ide_init_ports(&hw, pmif->regbase);
|
pmac_ide_init_ports(&hw, pmif->regbase);
|
||||||
hw.irq = irq;
|
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);
|
rc = pmac_ide_setup_device(pmif, hwif, &hw);
|
||||||
if (rc != 0) {
|
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;
|
goto out_free_pmif;
|
||||||
}
|
}
|
||||||
|
|
||||||
hwif->dev = &pdev->dev;
|
|
||||||
pmif->mdev = NULL;
|
pmif->mdev = NULL;
|
||||||
pmif->node = np;
|
pmif->node = np;
|
||||||
|
|
||||||
|
|
|
@ -346,8 +346,6 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev,
|
||||||
|
|
||||||
ide_init_port_hw(hwif, &hw);
|
ide_init_port_hw(hwif, &hw);
|
||||||
|
|
||||||
hwif->dev = &dev->dev;
|
|
||||||
|
|
||||||
return hwif;
|
return hwif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,7 @@ typedef struct hw_regs_s {
|
||||||
int irq; /* our irq number */
|
int irq; /* our irq number */
|
||||||
ide_ack_intr_t *ack_intr; /* acknowledge interrupt */
|
ide_ack_intr_t *ack_intr; /* acknowledge interrupt */
|
||||||
hwif_chipset_t chipset;
|
hwif_chipset_t chipset;
|
||||||
struct device *dev;
|
struct device *dev, *parent;
|
||||||
} hw_regs_t;
|
} hw_regs_t;
|
||||||
|
|
||||||
void ide_init_port_data(struct hwif_s *, unsigned int);
|
void ide_init_port_data(struct hwif_s *, unsigned int);
|
||||||
|
|
Loading…
Reference in New Issue