aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/sata_mv.c
diff options
context:
space:
mode:
authorMark Lord <liml@rtr.ca>2008-01-26 18:31:48 -0500
committerJeff Garzik <jeff@garzik.org>2008-02-01 11:29:47 -0500
commit8c0aeb4a483334613336ef895f34cecc0ecbbfa6 (patch)
tree4fadbd137b2e96c7630826b8e48b525d93b7beb2 /drivers/ata/sata_mv.c
parent721091685f853ba4e6c49f26f989db0b1a811250 (diff)
sata_mv ncq Use hqtag instead of ioid
Simplify tag handling by using the cid/hqtag field instead of ioid, as recommended by Marvell. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/sata_mv.c')
-rw-r--r--drivers/ata/sata_mv.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 32a0ace5234a..c60255810e68 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -1252,7 +1252,6 @@ static void mv_qc_prep(struct ata_queued_cmd *qc)
1252 flags |= CRQB_FLAG_READ; 1252 flags |= CRQB_FLAG_READ;
1253 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag); 1253 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag);
1254 flags |= qc->tag << CRQB_TAG_SHIFT; 1254 flags |= qc->tag << CRQB_TAG_SHIFT;
1255 flags |= qc->tag << CRQB_IOID_SHIFT; /* 50xx appears to ignore this*/
1256 1255
1257 /* get current queue index from software */ 1256 /* get current queue index from software */
1258 in_index = pp->req_idx & MV_MAX_Q_DEPTH_MASK; 1257 in_index = pp->req_idx & MV_MAX_Q_DEPTH_MASK;
@@ -1345,8 +1344,7 @@ static void mv_qc_prep_iie(struct ata_queued_cmd *qc)
1345 1344
1346 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag); 1345 WARN_ON(MV_MAX_Q_DEPTH <= qc->tag);
1347 flags |= qc->tag << CRQB_TAG_SHIFT; 1346 flags |= qc->tag << CRQB_TAG_SHIFT;
1348 flags |= qc->tag << CRQB_IOID_SHIFT; /* "I/O Id" is -really- 1347 flags |= qc->tag << CRQB_HOSTQ_SHIFT;
1349 what we use as our tag */
1350 1348
1351 /* get current queue index from software */ 1349 /* get current queue index from software */
1352 in_index = pp->req_idx & MV_MAX_Q_DEPTH_MASK; 1350 in_index = pp->req_idx & MV_MAX_Q_DEPTH_MASK;
@@ -1587,13 +1585,8 @@ static void mv_intr_edma(struct ata_port *ap)
1587 * support for queueing. this works transparently for 1585 * support for queueing. this works transparently for
1588 * queued and non-queued modes. 1586 * queued and non-queued modes.
1589 */ 1587 */
1590 else if (IS_GEN_II(hpriv)) 1588 else
1591 tag = (le16_to_cpu(pp->crpb[out_index].id) 1589 tag = le16_to_cpu(pp->crpb[out_index].id) & 0x1f;
1592 >> CRPB_IOID_SHIFT_6) & 0x3f;
1593
1594 else /* IS_GEN_IIE */
1595 tag = (le16_to_cpu(pp->crpb[out_index].id)
1596 >> CRPB_IOID_SHIFT_7) & 0x3f;
1597 1590
1598 qc = ata_qc_from_tag(ap, tag); 1591 qc = ata_qc_from_tag(ap, tag);
1599 1592