scsi: ufs: Refactor ADAPT configuration function
authorStanley Chu <stanley.chu@mediatek.com>
Mon, 16 Nov 2020 06:50:52 +0000 (14:50 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 17 Nov 2020 06:03:18 +0000 (01:03 -0500)
Several vendors are using same code to configure ADAPT settings for
HS-G4. Simply refactor it as common function.

Link: https://lore.kernel.org/r/20201116065054.7658-8-stanley.chu@mediatek.com
Reviewed-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c
drivers/scsi/ufs/ufshcd.h

index 9186ee0..80cbce4 100644 (file)
@@ -3587,6 +3587,22 @@ static int ufshcd_dme_reset(struct ufs_hba *hba)
        return ret;
 }
 
+int ufshcd_dme_configure_adapt(struct ufs_hba *hba,
+                              int agreed_gear,
+                              int adapt_val)
+{
+       int ret;
+
+       if (agreed_gear != UFS_HS_G4)
+               adapt_val = PA_INITIAL_ADAPT;
+
+       ret = ufshcd_dme_set(hba,
+                            UIC_ARG_MIB(PA_TXHSADAPTTYPE),
+                            adapt_val);
+       return ret;
+}
+EXPORT_SYMBOL_GPL(ufshcd_dme_configure_adapt);
+
 /**
  * ufshcd_dme_enable - UIC command for DME_ENABLE
  * @hba: per adapter instance
index 5191d87..d0b68df 100644 (file)
@@ -956,6 +956,9 @@ extern int ufshcd_runtime_idle(struct ufs_hba *hba);
 extern int ufshcd_system_suspend(struct ufs_hba *hba);
 extern int ufshcd_system_resume(struct ufs_hba *hba);
 extern int ufshcd_shutdown(struct ufs_hba *hba);
+extern int ufshcd_dme_configure_adapt(struct ufs_hba *hba,
+                                     int agreed_gear,
+                                     int adapt_val);
 extern int ufshcd_dme_set_attr(struct ufs_hba *hba, u32 attr_sel,
                               u8 attr_set, u32 mib_val, u8 peer);
 extern int ufshcd_dme_get_attr(struct ufs_hba *hba, u32 attr_sel,