summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/ufs/ufs-qcom.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c
index 450b5377051a..cdde478eb511 100644
--- a/drivers/scsi/ufs/ufs-qcom.c
+++ b/drivers/scsi/ufs/ufs-qcom.c
@@ -904,6 +904,13 @@ static int ufs_qcom_pwr_change_notify(struct ufs_hba *hba,
ufs_qcom_cap.hs_rx_gear = UFS_HS_G2;
}
+ /*
+ * Until High Speed gear mode is stabilized, operate in PWM gear
+ * mode for newer controller versions.
+ */
+ if (host->hw_ver.major >= 0x2)
+ ufs_qcom_cap.desired_working_mode = SLOW;
+
ret = ufs_qcom_get_pwr_dev_param(&ufs_qcom_cap,
dev_max_params,
dev_req_params);
@@ -1010,9 +1017,11 @@ static void ufs_qcom_set_caps(struct ufs_hba *hba)
ufs_qcom_get_controller_revision(hba, &major, &minor, &step);
- hba->caps |= UFSHCD_CAP_CLK_GATING | UFSHCD_CAP_CLK_SCALING;
- hba->caps |= UFSHCD_CAP_AUTO_BKOPS_SUSPEND;
- hba->caps |= UFSHCD_CAP_HIBERN8_ENTER_ON_IDLE;
+ if (host->hw_ver.major < 0x2) {
+ hba->caps |= UFSHCD_CAP_CLK_GATING | UFSHCD_CAP_CLK_SCALING;
+ hba->caps |= UFSHCD_CAP_AUTO_BKOPS_SUSPEND;
+ hba->caps |= UFSHCD_CAP_HIBERN8_ENTER_ON_IDLE;
+ }
if (host->hw_ver.major >= 0x2) {
hba->caps |= UFSHCD_CAP_POWER_COLLAPSE_DURING_HIBERN8;