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

Message ID 20210531051757.11538-1-stanley.chu@mediatek.com
State New
Headers show
Series
  • [v1] scsi: ufs-mediatek: Fix HCI version in some platforms
Related show

Commit Message

Stanley Chu May 31, 2021, 5:17 a.m.
Some MediaTek platforms have incorrect UFSHCI versions showed
in register map. Fix the version by referring to UniPro version
which is always correct.

Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
---
 drivers/scsi/ufs/ufs-mediatek.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Alim Akhtar May 31, 2021, 5:31 a.m. | #1
Hi Stanley,

> -----Original Message-----
> From: Stanley Chu <stanley.chu@mediatek.com>
> Sent: 31 May 2021 10:48
> To: linux-scsi@vger.kernel.org; martin.petersen@oracle.com;
> avri.altman@wdc.com; alim.akhtar@samsung.com; jejb@linux.ibm.com
> Cc: peter.wang@mediatek.com; chun-hung.wu@mediatek.com;
> alice.chao@mediatek.com; jonathan.hsu@mediatek.com;
> powen.kao@mediatek.com; cc.chou@mediatek.com;
> chaotian.jing@mediatek.com; jiajie.hao@mediatek.com; Stanley Chu
> <stanley.chu@mediatek.com>
> Subject: [PATCH v1] scsi: ufs-mediatek: Fix HCI version in some platforms
> 
> Some MediaTek platforms have incorrect UFSHCI versions showed in register
> map. Fix the version by referring to UniPro version which is always
correct.
> 
A bit of extra details will help here, like say HCI version below 3.0 is
broken on some MediaTek SoC etc.
That will also help to understand if this was a deviation from HCI spec. 

> Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
> ---

With the updated commit message, feel free to add
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

>  drivers/scsi/ufs/ufs-mediatek.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/scsi/ufs/ufs-mediatek.c
b/drivers/scsi/ufs/ufs-mediatek.c
> index 9912e208c2a1..3d3605fd05b2 100644
> --- a/drivers/scsi/ufs/ufs-mediatek.c
> +++ b/drivers/scsi/ufs/ufs-mediatek.c
> @@ -606,6 +606,16 @@ static void ufs_mtk_get_controller_version(struct
> ufs_hba *hba)
>  		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) &&
> +	    host->hw_ver.major == 3)
> +		hba->ufs_version = ufshci_version(3, 0); }
> +
> +static u32 ufs_mtk_get_ufs_hci_version(struct ufs_hba *hba) {
> +	return hba->ufs_version;
>  }
> 
>  /**
> @@ -1042,6 +1052,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,
> --
> 2.18.0
Stanley Chu May 31, 2021, 6:27 a.m. | #2
Hi Alim,

On Mon, 2021-05-31 at 11:01 +0530, Alim Akhtar wrote:
> Hi Stanley,

> 

> > -----Original Message-----

> > From: Stanley Chu <stanley.chu@mediatek.com>

> > Sent: 31 May 2021 10:48

> > To: linux-scsi@vger.kernel.org; martin.petersen@oracle.com;

> > avri.altman@wdc.com; alim.akhtar@samsung.com; jejb@linux.ibm.com

> > Cc: peter.wang@mediatek.com; chun-hung.wu@mediatek.com;

> > alice.chao@mediatek.com; jonathan.hsu@mediatek.com;

> > powen.kao@mediatek.com; cc.chou@mediatek.com;

> > chaotian.jing@mediatek.com; jiajie.hao@mediatek.com; Stanley Chu

> > <stanley.chu@mediatek.com>

> > Subject: [PATCH v1] scsi: ufs-mediatek: Fix HCI version in some platforms

> > 

> > Some MediaTek platforms have incorrect UFSHCI versions showed in register

> > map. Fix the version by referring to UniPro version which is always

> correct.

> > 

> A bit of extra details will help here, like say HCI version below 3.0 is

> broken on some MediaTek SoC etc.

> That will also help to understand if this was a deviation from HCI spec. 


Thanks for the review.
I would fix it in next version.

> 

> > Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>

> > ---

> 

> With the updated commit message, feel free to add

> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>

> 

> >  drivers/scsi/ufs/ufs-mediatek.c | 11 +++++++++++

> >  1 file changed, 11 insertions(+)

> > 

> > diff --git a/drivers/scsi/ufs/ufs-mediatek.c

> b/drivers/scsi/ufs/ufs-mediatek.c

> > index 9912e208c2a1..3d3605fd05b2 100644

> > --- a/drivers/scsi/ufs/ufs-mediatek.c

> > +++ b/drivers/scsi/ufs/ufs-mediatek.c

> > @@ -606,6 +606,16 @@ static void ufs_mtk_get_controller_version(struct

> > ufs_hba *hba)

> >  		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) &&

> > +	    host->hw_ver.major == 3)

> > +		hba->ufs_version = ufshci_version(3, 0); }

> > +

> > +static u32 ufs_mtk_get_ufs_hci_version(struct ufs_hba *hba) {

> > +	return hba->ufs_version;

> >  }

> > 

> >  /**

> > @@ -1042,6 +1052,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,

> > --

> > 2.18.0

> 

>

Patch

diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index 9912e208c2a1..3d3605fd05b2 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -606,6 +606,16 @@  static void ufs_mtk_get_controller_version(struct ufs_hba *hba)
 		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) &&
+	    host->hw_ver.major == 3)
+		hba->ufs_version = ufshci_version(3, 0);
+}
+
+static u32 ufs_mtk_get_ufs_hci_version(struct ufs_hba *hba)
+{
+	return hba->ufs_version;
 }
 
 /**
@@ -1042,6 +1052,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,