* [PATCH 4/6] ide: use ide_init_port_hw() in setup-pci.c
@ 2007-11-27 22:58 Bartlomiej Zolnierkiewicz
0 siblings, 0 replies; only message in thread
From: Bartlomiej Zolnierkiewicz @ 2007-11-27 22:58 UTC (permalink / raw)
To: linux-ide
* Move setting hwif->gendev.parent from ide_pci_setup_ports()
to ide_hwif_configure().
* Always set hwif->io_ports in ide_hwif_configure().
* Use ide_init_port_hw() in ide_hwif_configure().
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
drivers/ide/setup-pci.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
Index: b/drivers/ide/setup-pci.c
===================================================================
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -363,6 +363,8 @@ static ide_hwif_t *ide_hwif_configure(st
unsigned long ctl = 0, base = 0;
ide_hwif_t *hwif;
u8 bootable = (d->host_flags & IDE_HFLAG_BOOTABLE) ? 1 : 0;
+ u8 oldnoprobe = 0;
+ struct hw_regs_s hw;
if ((d->host_flags & IDE_HFLAG_ISA_PORTS) == 0) {
/* Possibly we should fail if these checks report true */
@@ -385,22 +387,25 @@ static ide_hwif_t *ide_hwif_configure(st
}
if ((hwif = ide_match_hwif(base, bootable, d->name)) == NULL)
return NULL; /* no room in ide_hwifs[] */
- if (hwif->io_ports[IDE_DATA_OFFSET] != base ||
- hwif->io_ports[IDE_CONTROL_OFFSET] != (ctl | 2)) {
- hw_regs_t hw;
-
- memset(&hw, 0, sizeof(hw));
- ide_std_init_ports(&hw, base, ctl | 2);
- memcpy(hwif->io_ports, hw.io_ports, sizeof(hwif->io_ports));
- hwif->noprobe = 0;
- }
- hwif->chipset = d->chipset ? d->chipset : ide_pci;
+
+ memset(&hw, 0, sizeof(hw));
+ hw.irq = hwif->irq ? hwif->irq : irq;
+ hw.dev = &dev->dev;
+ hw.chipset = d->chipset ? d->chipset : ide_pci;
+ ide_std_init_ports(&hw, base, ctl | 2);
+
+ if (hwif->io_ports[IDE_DATA_OFFSET] == base &&
+ hwif->io_ports[IDE_CONTROL_OFFSET] == (ctl | 2))
+ oldnoprobe = hwif->noprobe;
+
+ ide_init_port_hw(hwif, &hw);
+
+ hwif->noprobe = oldnoprobe;
+
hwif->pci_dev = dev;
hwif->cds = d;
hwif->channel = port;
- if (!hwif->irq)
- hwif->irq = irq;
if (mate) {
hwif->mate = mate;
mate->mate = hwif;
@@ -535,12 +540,8 @@ void ide_pci_setup_ports(struct pci_dev
if ((hwif = ide_hwif_configure(dev, d, mate, port, pciirq)) == NULL)
continue;
- /* setup proper ancestral information */
- hwif->gendev.parent = &dev->dev;
-
*(idx + port) = hwif->index;
-
if (d->init_iops)
d->init_iops(hwif);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-11-27 22:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-27 22:58 [PATCH 4/6] ide: use ide_init_port_hw() in setup-pci.c Bartlomiej Zolnierkiewicz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).