Merge branch 'for-2.6.31' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[linux-block.git] / drivers / ide / ide-probe.c
index 79e0af3fd158a229d2e1f2945e9d270297f4cc4f..51af4eea0d367440d69a9c6db98e097f50ad2d12 100644 (file)
@@ -1170,7 +1170,6 @@ static void ide_init_port_hw(ide_hwif_t *hwif, struct ide_hw *hw)
        hwif->irq = hw->irq;
        hwif->dev = hw->dev;
        hwif->gendev.parent = hw->parent ? hw->parent : hw->dev;
-       hwif->ack_intr = hw->ack_intr;
        hwif->config_data = hw->config;
 }
 
@@ -1378,6 +1377,9 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
 
                ide_init_port(hwif, i & 1, d);
                ide_port_cable_detect(hwif);
+
+               hwif->port_flags |= IDE_PFLAG_PROBING;
+
                ide_port_init_devices(hwif);
        }
 
@@ -1388,6 +1390,8 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
                if (ide_probe_port(hwif) == 0)
                        hwif->present = 1;
 
+               hwif->port_flags &= ~IDE_PFLAG_PROBING;
+
                if ((hwif->host_flags & IDE_HFLAG_4DRIVES) == 0 ||
                    hwif->mate == NULL || hwif->mate->present == 0) {
                        if (ide_register_port(hwif)) {
@@ -1569,11 +1573,20 @@ EXPORT_SYMBOL_GPL(ide_host_remove);
 
 void ide_port_scan(ide_hwif_t *hwif)
 {
+       int rc;
+
        ide_port_apply_params(hwif);
        ide_port_cable_detect(hwif);
+
+       hwif->port_flags |= IDE_PFLAG_PROBING;
+
        ide_port_init_devices(hwif);
 
-       if (ide_probe_port(hwif) < 0)
+       rc = ide_probe_port(hwif);
+
+       hwif->port_flags &= ~IDE_PFLAG_PROBING;
+
+       if (rc < 0)
                return;
 
        hwif->present = 1;