diff options
author | Mark Lord <liml@rtr.ca> | 2008-01-26 18:31:48 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-02-01 11:29:47 -0500 |
commit | 8c0aeb4a483334613336ef895f34cecc0ecbbfa6 (patch) | |
tree | 4fadbd137b2e96c7630826b8e48b525d93b7beb2 /drivers/ata/sata_mv.c | |
parent | 721091685f853ba4e6c49f26f989db0b1a811250 (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.c | 13 |
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 | ||