diff mbox series

[v2] scsi: ufs-mediatek: Fix HCI version in some platforms

Message ID 20210531062642.12642-1-stanley.chu@mediatek.com (mailing list archive)
State Accepted
Headers show
Series [v2] scsi: ufs-mediatek: Fix HCI version in some platforms | expand

Commit Message

Stanley Chu May 31, 2021, 6:26 a.m. UTC
Some MediaTek SoC platforms with UFSHCI version below 3.0 have
incorrect UFSHCI versions showed in register map.

Fix the version by referring to UniPro version which is
always correct.

Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
---
 drivers/scsi/ufs/ufs-mediatek.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

Comments

Martin K. Petersen June 2, 2021, 5:45 a.m. UTC | #1
On Mon, 31 May 2021 14:26:42 +0800, Stanley Chu wrote:

> Some MediaTek SoC platforms with UFSHCI version below 3.0 have
> incorrect UFSHCI versions showed in register map.
> 
> Fix the version by referring to UniPro version which is
> always correct.

Applied to 5.13/scsi-fixes, thanks!

[1/1] scsi: ufs-mediatek: Fix HCI version in some platforms
      https://git.kernel.org/mkp/scsi/c/2c89e41326b1
diff mbox series

Patch

diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 9912e208c2a1..a0abf9cb2398 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -603,11 +603,23 @@  static void ufs_mtk_get_controller_version(struct ufs_hba *hba)
 
 	ret = ufshcd_dme_get(hba, UIC_ARG_MIB(PA_LOCALVERINFO), &ver);
 	if (!ret) {
-		if (ver >= UFS_UNIPRO_VER_1_8)
+		if (ver >= UFS_UNIPRO_VER_1_8) {
 			host->hw_ver.major = 3;
+			/*
+			 * Fix HCI version for some platforms with
+			 * incorrect version
+			 */
+			if (hba->ufs_version < ufshci_version(3, 0))
+				hba->ufs_version = ufshci_version(3, 0);
+		}
 	}
 }
 
+static u32 ufs_mtk_get_ufs_hci_version(struct ufs_hba *hba)
+{
+	return hba->ufs_version;
+}
+
 /**
  * ufs_mtk_init - find other essential mmio bases
  * @hba: host controller instance
@@ -1042,6 +1054,7 @@  static void ufs_mtk_event_notify(struct ufs_hba *hba,
 static const struct ufs_hba_variant_ops ufs_hba_mtk_vops = {
 	.name                = "mediatek.ufshci",
 	.init                = ufs_mtk_init,
+	.get_ufs_hci_version = ufs_mtk_get_ufs_hci_version,
 	.setup_clocks        = ufs_mtk_setup_clocks,
 	.hce_enable_notify   = ufs_mtk_hce_enable_notify,
 	.link_startup_notify = ufs_mtk_link_startup_notify,