diff options
Diffstat (limited to 'drivers/scsi/pdc_adma.c')
| -rw-r--r-- | drivers/scsi/pdc_adma.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/scsi/pdc_adma.c b/drivers/scsi/pdc_adma.c index 53b8db4be1a9..c6825da6ae20 100644 --- a/drivers/scsi/pdc_adma.c +++ b/drivers/scsi/pdc_adma.c | |||
| @@ -293,14 +293,14 @@ static void adma_eng_timeout(struct ata_port *ap) | |||
| 293 | 293 | ||
| 294 | static int adma_fill_sg(struct ata_queued_cmd *qc) | 294 | static int adma_fill_sg(struct ata_queued_cmd *qc) |
| 295 | { | 295 | { |
| 296 | struct scatterlist *sg = qc->sg; | 296 | struct scatterlist *sg; |
| 297 | struct ata_port *ap = qc->ap; | 297 | struct ata_port *ap = qc->ap; |
| 298 | struct adma_port_priv *pp = ap->private_data; | 298 | struct adma_port_priv *pp = ap->private_data; |
| 299 | u8 *buf = pp->pkt; | 299 | u8 *buf = pp->pkt; |
| 300 | int nelem, i = (2 + buf[3]) * 8; | 300 | int i = (2 + buf[3]) * 8; |
| 301 | u8 pFLAGS = pORD | ((qc->tf.flags & ATA_TFLAG_WRITE) ? pDIRO : 0); | 301 | u8 pFLAGS = pORD | ((qc->tf.flags & ATA_TFLAG_WRITE) ? pDIRO : 0); |
| 302 | 302 | ||
| 303 | for (nelem = 0; nelem < qc->n_elem; nelem++,sg++) { | 303 | ata_for_each_sg(sg, qc) { |
| 304 | u32 addr; | 304 | u32 addr; |
| 305 | u32 len; | 305 | u32 len; |
| 306 | 306 | ||
| @@ -312,7 +312,7 @@ static int adma_fill_sg(struct ata_queued_cmd *qc) | |||
| 312 | *(__le32 *)(buf + i) = cpu_to_le32(len); | 312 | *(__le32 *)(buf + i) = cpu_to_le32(len); |
| 313 | i += 4; | 313 | i += 4; |
| 314 | 314 | ||
| 315 | if ((nelem + 1) == qc->n_elem) | 315 | if (ata_sg_is_last(sg, qc)) |
| 316 | pFLAGS |= pEND; | 316 | pFLAGS |= pEND; |
| 317 | buf[i++] = pFLAGS; | 317 | buf[i++] = pFLAGS; |
| 318 | buf[i++] = qc->dev->dma_mode & 0xf; | 318 | buf[i++] = qc->dev->dma_mode & 0xf; |
