Re: [PATCH v4 8/8] scsi: ufs: Select INITIAL adapt for HS Gear4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/22/2020 11:25 PM, Can Guo wrote:
ADAPT is added specifically for HS Gear4 mode only, select INITIAL adapt
before do power mode change to G4 and select no adapt before switch to
non-G4 modes.

Signed-off-by: Can Guo <cang@xxxxxxxxxxxxxx>
---

LGTM.

Reviewed-by: Asutosh Das <asutoshd@xxxxxxxxxxxxxx>

  drivers/scsi/ufs/ufshcd.c | 14 +++++++++++++-
  drivers/scsi/ufs/ufshci.h |  1 +
  drivers/scsi/ufs/unipro.h |  7 +++++++
  3 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 1ee2187..f6d4828 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -4134,6 +4134,17 @@ static int ufshcd_change_power_mode(struct ufs_hba *hba,
  		ufshcd_dme_set(hba, UIC_ARG_MIB(PA_HSSERIES),
  						pwr_mode->hs_rate);
+ if (hba->ufs_version >= UFSHCI_VERSION_30) {
+		if (pwr_mode->gear_tx == UFS_HS_G4)
+			/* INITIAL ADAPT */
+			ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXHSADAPTTYPE),
+					PA_INITIAL_ADAPT);
+		else
+			/* NO ADAPT */
+			ufshcd_dme_set(hba, UIC_ARG_MIB(PA_TXHSADAPTTYPE),
+					PA_NO_ADAPT);
+	}
+
  	ret = ufshcd_uic_change_pwr_mode(hba, pwr_mode->pwr_rx << 4
  			| pwr_mode->pwr_tx);
@@ -8422,7 +8433,8 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
  	if ((hba->ufs_version != UFSHCI_VERSION_10) &&
  	    (hba->ufs_version != UFSHCI_VERSION_11) &&
  	    (hba->ufs_version != UFSHCI_VERSION_20) &&
-	    (hba->ufs_version != UFSHCI_VERSION_21))
+	    (hba->ufs_version != UFSHCI_VERSION_21) &&
+	    (hba->ufs_version != UFSHCI_VERSION_30))
  		dev_err(hba->dev, "invalid UFS version 0x%x\n",
  			hba->ufs_version);
diff --git a/drivers/scsi/ufs/ufshci.h b/drivers/scsi/ufs/ufshci.h
index dbb75cd..95b4b03 100644
--- a/drivers/scsi/ufs/ufshci.h
+++ b/drivers/scsi/ufs/ufshci.h
@@ -104,6 +104,7 @@ enum {
  	UFSHCI_VERSION_11 = 0x00010100, /* 1.1 */
  	UFSHCI_VERSION_20 = 0x00000200, /* 2.0 */
  	UFSHCI_VERSION_21 = 0x00000210, /* 2.1 */
+	UFSHCI_VERSION_30 = 0x00000300, /* 3.0 */
  };
/*
diff --git a/drivers/scsi/ufs/unipro.h b/drivers/scsi/ufs/unipro.h
index f539f87..960d175 100644
--- a/drivers/scsi/ufs/unipro.h
+++ b/drivers/scsi/ufs/unipro.h
@@ -146,6 +146,12 @@
  #define PA_SLEEPNOCONFIGTIME	0x15A2
  #define PA_STALLNOCONFIGTIME	0x15A3
  #define PA_SAVECONFIGTIME	0x15A4
+#define PA_TXHSADAPTTYPE	0x15D4
+
+/* Adpat type for PA_TXHSADAPTTYPE attribute */
+#define PA_REFRESH_ADAPT	0x00
+#define PA_INITIAL_ADAPT	0x01
+#define PA_NO_ADAPT		0x03
#define PA_TACTIVATE_TIME_UNIT_US 10
  #define PA_HIBERN8_TIME_UNIT_US		100
@@ -192,6 +198,7 @@ enum ufs_hs_gear_tag {
  	UFS_HS_G1,		/* HS Gear 1 (default for reset) */
  	UFS_HS_G2,		/* HS Gear 2 */
  	UFS_HS_G3,		/* HS Gear 3 */
+	UFS_HS_G4,		/* HS Gear 4 */
  };
enum ufs_unipro_ver {



--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
Linux Foundation Collaborative Project



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux