|
@@ -1378,6 +1378,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 +1391,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 +1574,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;
|