aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libata-scsi.c')
-rw-r--r--drivers/scsi/libata-scsi.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 22434e0d4e75..4982e6eff700 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -435,10 +435,21 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc,
435 return 1; /* power conditions not supported */ 435 return 1; /* power conditions not supported */
436 if (scsicmd[4] & 0x1) { 436 if (scsicmd[4] & 0x1) {
437 tf->nsect = 1; /* 1 sector, lba=0 */ 437 tf->nsect = 1; /* 1 sector, lba=0 */
438 tf->lbah = 0x0; 438
439 tf->lbam = 0x0; 439 if (qc->dev->flags & ATA_DFLAG_LBA) {
440 tf->lbal = 0x0; 440 qc->tf.flags |= ATA_TFLAG_LBA;
441 tf->device |= ATA_LBA; 441
442 tf->lbah = 0x0;
443 tf->lbam = 0x0;
444 tf->lbal = 0x0;
445 tf->device |= ATA_LBA;
446 } else {
447 /* CHS */
448 tf->lbal = 0x1; /* sect */
449 tf->lbam = 0x0; /* cyl low */
450 tf->lbah = 0x0; /* cyl high */
451 }
452
442 tf->command = ATA_CMD_VERIFY; /* READ VERIFY */ 453 tf->command = ATA_CMD_VERIFY; /* READ VERIFY */
443 } else { 454 } else {
444 tf->nsect = 0; /* time period value (0 implies now) */ 455 tf->nsect = 0; /* time period value (0 implies now) */