Skip to content

Commit

Permalink
[PATCH] sata_sil24: fix on-memory structure byteorder
Browse files Browse the repository at this point in the history
Data structures residing on memory and fetched by the controller
should have LE ordering.  Fix it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Apr 11, 2006
1 parent a5b4c47 commit bad28a3
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions drivers/scsi/sata_sil24.c
Original file line number Diff line number Diff line change
Expand Up @@ -481,7 +481,7 @@ static int sil24_softreset(struct ata_port *ap, unsigned int *class)
}

/* do SRST */
prb->ctrl = PRB_CTRL_SRST;
prb->ctrl = cpu_to_le16(PRB_CTRL_SRST);
prb->fis[1] = 0; /* no PM yet */

writel((u32)paddr, port + PORT_CMD_ACTIVATE);
Expand Down Expand Up @@ -597,14 +597,14 @@ static void sil24_qc_prep(struct ata_queued_cmd *qc)
union sil24_cmd_block *cb = pp->cmd_block + qc->tag;
struct sil24_prb *prb;
struct sil24_sge *sge;
u16 ctrl = 0;

switch (qc->tf.protocol) {
case ATA_PROT_PIO:
case ATA_PROT_DMA:
case ATA_PROT_NODATA:
prb = &cb->ata.prb;
sge = cb->ata.sge;
prb->ctrl = 0;
break;

case ATA_PROT_ATAPI:
Expand All @@ -617,12 +617,10 @@ static void sil24_qc_prep(struct ata_queued_cmd *qc)

if (qc->tf.protocol != ATA_PROT_ATAPI_NODATA) {
if (qc->tf.flags & ATA_TFLAG_WRITE)
prb->ctrl = PRB_CTRL_PACKET_WRITE;
ctrl = PRB_CTRL_PACKET_WRITE;
else
prb->ctrl = PRB_CTRL_PACKET_READ;
} else
prb->ctrl = 0;

ctrl = PRB_CTRL_PACKET_READ;
}
break;

default:
Expand All @@ -631,6 +629,7 @@ static void sil24_qc_prep(struct ata_queued_cmd *qc)
BUG();
}

prb->ctrl = cpu_to_le16(ctrl);
ata_tf_to_fis(&qc->tf, prb->fis, 0);

if (qc->flags & ATA_QCFLAG_DMAMAP)
Expand Down

0 comments on commit bad28a3

Please sign in to comment.