diff options
| -rw-r--r-- | drivers/scsi/libata-core.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 42d43b55fb8f..c17df3f22fd1 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
| @@ -1344,32 +1344,30 @@ static int ata_bus_probe(struct ata_port *ap) | |||
| 1344 | 1344 | ||
| 1345 | ata_port_probe(ap); | 1345 | ata_port_probe(ap); |
| 1346 | 1346 | ||
| 1347 | /* reset */ | 1347 | /* reset and determine device classes */ |
| 1348 | if (ap->ops->probe_reset) { | 1348 | for (i = 0; i < ATA_MAX_DEVICES; i++) |
| 1349 | for (i = 0; i < ATA_MAX_DEVICES; i++) | 1349 | classes[i] = ATA_DEV_UNKNOWN; |
| 1350 | classes[i] = ATA_DEV_UNKNOWN; | ||
| 1351 | 1350 | ||
| 1351 | if (ap->ops->probe_reset) { | ||
| 1352 | rc = ap->ops->probe_reset(ap, classes); | 1352 | rc = ap->ops->probe_reset(ap, classes); |
| 1353 | if (rc) { | 1353 | if (rc) { |
| 1354 | printk("ata%u: reset failed (errno=%d)\n", ap->id, rc); | 1354 | printk("ata%u: reset failed (errno=%d)\n", ap->id, rc); |
| 1355 | return rc; | 1355 | return rc; |
| 1356 | } | 1356 | } |
| 1357 | |||
| 1358 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
| 1359 | if (classes[i] == ATA_DEV_UNKNOWN) | ||
| 1360 | classes[i] = ATA_DEV_NONE; | ||
| 1361 | } else { | 1357 | } else { |
| 1362 | ap->ops->phy_reset(ap); | 1358 | ap->ops->phy_reset(ap); |
| 1363 | 1359 | ||
| 1364 | for (i = 0; i < ATA_MAX_DEVICES; i++) { | 1360 | if (!(ap->flags & ATA_FLAG_PORT_DISABLED)) |
| 1365 | if (!(ap->flags & ATA_FLAG_PORT_DISABLED)) | 1361 | for (i = 0; i < ATA_MAX_DEVICES; i++) |
| 1366 | classes[i] = ap->device[i].class; | 1362 | classes[i] = ap->device[i].class; |
| 1367 | else | 1363 | |
| 1368 | ap->device[i].class = ATA_DEV_UNKNOWN; | ||
| 1369 | } | ||
| 1370 | ata_port_probe(ap); | 1364 | ata_port_probe(ap); |
| 1371 | } | 1365 | } |
| 1372 | 1366 | ||
| 1367 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
| 1368 | if (classes[i] == ATA_DEV_UNKNOWN) | ||
| 1369 | classes[i] = ATA_DEV_NONE; | ||
| 1370 | |||
| 1373 | /* read IDENTIFY page and configure devices */ | 1371 | /* read IDENTIFY page and configure devices */ |
| 1374 | for (i = 0; i < ATA_MAX_DEVICES; i++) { | 1372 | for (i = 0; i < ATA_MAX_DEVICES; i++) { |
| 1375 | struct ata_device *dev = &ap->device[i]; | 1373 | struct ata_device *dev = &ap->device[i]; |
