[libata passthru] address slave devices correctly
authorMark Lord <mlord@pobox.com>
Sun, 13 Nov 2005 21:22:06 +0000 (16:22 -0500)
committerJeff Garzik <jgarzik@pobox.com>
Sun, 13 Nov 2005 21:22:06 +0000 (16:22 -0500)
drivers/scsi/libata-scsi.c

index 261be24e1df36bddfc63cb7e437b7183c31766b4..0df4b682965d41aab2d040edc7914444f3ebe10e 100644 (file)
@@ -2276,6 +2276,12 @@ ata_scsi_pass_thru(struct ata_queued_cmd *qc, const u8 *scsicmd)
                tf->device = scsicmd[8];
                tf->command = scsicmd[9];
        }
+       /*
+        * If slave is possible, enforce correct master/slave bit
+       */
+       if (qc->ap->flags & ATA_FLAG_SLAVE_POSS)
+               tf->device = qc->dev->devno ?
+                       tf->device | ATA_DEV1 : tf->device & ~ATA_DEV1;
 
        /*
         * Filter SET_FEATURES - XFER MODE command -- otherwise,