diff options
Diffstat (limited to 'drivers/ide/ide-probe.c')
| -rw-r--r-- | drivers/ide/ide-probe.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 79e0af3fd158..51af4eea0d36 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -1170,7 +1170,6 @@ static void ide_init_port_hw(ide_hwif_t *hwif, struct ide_hw *hw) | |||
| 1170 | hwif->irq = hw->irq; | 1170 | hwif->irq = hw->irq; |
| 1171 | hwif->dev = hw->dev; | 1171 | hwif->dev = hw->dev; |
| 1172 | hwif->gendev.parent = hw->parent ? hw->parent : hw->dev; | 1172 | hwif->gendev.parent = hw->parent ? hw->parent : hw->dev; |
| 1173 | hwif->ack_intr = hw->ack_intr; | ||
| 1174 | hwif->config_data = hw->config; | 1173 | hwif->config_data = hw->config; |
| 1175 | } | 1174 | } |
| 1176 | 1175 | ||
| @@ -1378,6 +1377,9 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d, | |||
| 1378 | 1377 | ||
| 1379 | ide_init_port(hwif, i & 1, d); | 1378 | ide_init_port(hwif, i & 1, d); |
| 1380 | ide_port_cable_detect(hwif); | 1379 | ide_port_cable_detect(hwif); |
| 1380 | |||
| 1381 | hwif->port_flags |= IDE_PFLAG_PROBING; | ||
| 1382 | |||
| 1381 | ide_port_init_devices(hwif); | 1383 | ide_port_init_devices(hwif); |
| 1382 | } | 1384 | } |
| 1383 | 1385 | ||
| @@ -1388,6 +1390,8 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d, | |||
| 1388 | if (ide_probe_port(hwif) == 0) | 1390 | if (ide_probe_port(hwif) == 0) |
| 1389 | hwif->present = 1; | 1391 | hwif->present = 1; |
| 1390 | 1392 | ||
| 1393 | hwif->port_flags &= ~IDE_PFLAG_PROBING; | ||
| 1394 | |||
| 1391 | if ((hwif->host_flags & IDE_HFLAG_4DRIVES) == 0 || | 1395 | if ((hwif->host_flags & IDE_HFLAG_4DRIVES) == 0 || |
| 1392 | hwif->mate == NULL || hwif->mate->present == 0) { | 1396 | hwif->mate == NULL || hwif->mate->present == 0) { |
| 1393 | if (ide_register_port(hwif)) { | 1397 | if (ide_register_port(hwif)) { |
| @@ -1569,11 +1573,20 @@ EXPORT_SYMBOL_GPL(ide_host_remove); | |||
| 1569 | 1573 | ||
| 1570 | void ide_port_scan(ide_hwif_t *hwif) | 1574 | void ide_port_scan(ide_hwif_t *hwif) |
| 1571 | { | 1575 | { |
| 1576 | int rc; | ||
| 1577 | |||
| 1572 | ide_port_apply_params(hwif); | 1578 | ide_port_apply_params(hwif); |
| 1573 | ide_port_cable_detect(hwif); | 1579 | ide_port_cable_detect(hwif); |
| 1580 | |||
| 1581 | hwif->port_flags |= IDE_PFLAG_PROBING; | ||
| 1582 | |||
| 1574 | ide_port_init_devices(hwif); | 1583 | ide_port_init_devices(hwif); |
| 1575 | 1584 | ||
| 1576 | if (ide_probe_port(hwif) < 0) | 1585 | rc = ide_probe_port(hwif); |
| 1586 | |||
| 1587 | hwif->port_flags &= ~IDE_PFLAG_PROBING; | ||
| 1588 | |||
| 1589 | if (rc < 0) | ||
| 1577 | return; | 1590 | return; |
| 1578 | 1591 | ||
| 1579 | hwif->present = 1; | 1592 | hwif->present = 1; |
