Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=46a671430dfa4ca59c7a69f01326e99edddb21bd
Commit:     46a671430dfa4ca59c7a69f01326e99edddb21bd
Parent:     c88f90c3779cd5e710f2acdf59ad2bd0380de98d
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 4 13:33:30 2007 +0900
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Wed Jan 23 05:24:12 2008 -0500

    sata_promise: make pdc_atapi_pkt() use values from qc->tf
    
    Make pdc_atapi_pkt() use values from qc->tf instead of creating its
    own.  This is to ease future ATAPI handling changes.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Cc: Mikael Pettersson <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/ata/sata_promise.c |   34 +++++++++++++---------------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 7914def..9638faa 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -450,7 +450,7 @@ static void pdc_atapi_pkt(struct ata_queued_cmd *qc)
        struct pdc_port_priv *pp = ap->private_data;
        u8 *buf = pp->pkt;
        u32 *buf32 = (u32 *) buf;
-       unsigned int dev_sel, feature, nbytes;
+       unsigned int dev_sel, feature;
 
        /* set control bits (byte 0), zero delay seq id (byte 3),
         * and seq id (byte 2)
@@ -473,45 +473,37 @@ static void pdc_atapi_pkt(struct ata_queued_cmd *qc)
        buf32[2] = 0;                           /* no next-packet */
 
        /* select drive */
-       if (sata_scr_valid(&ap->link)) {
+       if (sata_scr_valid(&ap->link))
                dev_sel = PDC_DEVICE_SATA;
-       } else {
-               dev_sel = ATA_DEVICE_OBS;
-               if (qc->dev->devno != 0)
-                       dev_sel |= ATA_DEV1;
-       }
+       else
+               dev_sel = qc->tf.device;
+
        buf[12] = (1 << 5) | ATA_REG_DEVICE;
        buf[13] = dev_sel;
        buf[14] = (1 << 5) | ATA_REG_DEVICE | PDC_PKT_CLEAR_BSY;
        buf[15] = dev_sel; /* once more, waiting for BSY to clear */
 
        buf[16] = (1 << 5) | ATA_REG_NSECT;
-       buf[17] = 0x00;
+       buf[17] = qc->tf.nsect;
        buf[18] = (1 << 5) | ATA_REG_LBAL;
-       buf[19] = 0x00;
+       buf[19] = qc->tf.lbal;
 
        /* set feature and byte counter registers */
-       if (qc->tf.protocol != ATA_PROT_ATAPI_DMA) {
+       if (qc->tf.protocol != ATA_PROT_ATAPI_DMA)
                feature = PDC_FEATURE_ATAPI_PIO;
-               /* set byte counter register to real transfer byte count */
-               nbytes = qc->nbytes;
-               if (nbytes > 0xffff)
-                       nbytes = 0xffff;
-       } else {
+       else
                feature = PDC_FEATURE_ATAPI_DMA;
-               /* set byte counter register to 0 */
-               nbytes = 0;
-       }
+
        buf[20] = (1 << 5) | ATA_REG_FEATURE;
        buf[21] = feature;
        buf[22] = (1 << 5) | ATA_REG_BYTEL;
-       buf[23] = nbytes & 0xFF;
+       buf[23] = qc->tf.lbam;
        buf[24] = (1 << 5) | ATA_REG_BYTEH;
-       buf[25] = (nbytes >> 8) & 0xFF;
+       buf[25] = qc->tf.lbah;
 
        /* send ATAPI packet command 0xA0 */
        buf[26] = (1 << 5) | ATA_REG_CMD;
-       buf[27] = ATA_CMD_PACKET;
+       buf[27] = qc->tf.command;
 
        /* select drive and check DRQ */
        buf[28] = (1 << 5) | ATA_REG_DEVICE | PDC_PKT_WAIT_DRDY;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to