summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wang <peter.wang@mediatek.com>2026-02-10 10:17:30 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2026-02-24 21:41:54 +0300
commitf707860ebc84dd07148c3855e2f0fa9f41a3ed4a (patch)
tree293df7dd66a4df2c5b43739ee4f1a02daac5a072
parent3abe4113e784b4a1135fe0e89828afecbfebf862 (diff)
downloadlinux-f707860ebc84dd07148c3855e2f0fa9f41a3ed4a.tar.xz
scsi: ufs: core: Support UFSHCI 4.1 CQ entry tag
The UFSHCI 4.1 specification introduces a new completion queue (CQ) entry format, allowing the tag to be obtained directly. Signed-off-by: Peter Wang <peter.wang@mediatek.com> Reviewed-by: Bean Huo <beanhuo@micron.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://patch.msgid.link/20260210071834.1837878-1-peter.wang@mediatek.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/ufs/core/ufs-mcq.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ufs/core/ufs-mcq.c b/drivers/ufs/core/ufs-mcq.c
index eb3770830d73..b999bc4d532d 100644
--- a/drivers/ufs/core/ufs-mcq.c
+++ b/drivers/ufs/core/ufs-mcq.c
@@ -273,13 +273,18 @@ void ufshcd_mcq_write_cqis(struct ufs_hba *hba, u32 val, int i)
EXPORT_SYMBOL_GPL(ufshcd_mcq_write_cqis);
/*
- * Current MCQ specification doesn't provide a Task Tag or its equivalent in
+ * UFSHCI 4.0 MCQ specification doesn't provide a Task Tag or its equivalent in
* the Completion Queue Entry. Find the Task Tag using an indirect method.
+ * UFSHCI 4.1 and above can directly return the Task Tag in the Completion Queue
+ * Entry.
*/
static int ufshcd_mcq_get_tag(struct ufs_hba *hba, struct cq_entry *cqe)
{
u64 addr;
+ if (hba->ufs_version >= ufshci_version(4, 1))
+ return cqe->task_tag;
+
/* sizeof(struct utp_transfer_cmd_desc) must be a multiple of 128 */
BUILD_BUG_ON(sizeof(struct utp_transfer_cmd_desc) & GENMASK(6, 0));