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: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
上级 63b51c6d
...@@ -297,7 +297,8 @@ void ide_init_port_hw(ide_hwif_t *hwif, hw_regs_t *hw) ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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 { ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册