summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubhash Jadavani <subhashj@codeaurora.org>2015-01-29 18:52:18 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 10:58:42 -0700
commit8ef05b55a0303f01b8c020b877797224aca3a834 (patch)
treee348ca0effe212aab238b4d052bc237527621ba0
parent061c93d4f1267fee27767aecaab83119e8dfecce (diff)
scsi: ufs-qcom: disable low power modes and run slow on newer controller
Newer UFS controllers (revision 2) still need to be validated properly hence disable the low power modes for it until they are validated thoroughly. Also run the UFS interface in PWM gear until High Speed Gear operation is stabililized. Change-Id: I310b49030d084557f487f3095fc7e1cfa68335e6 Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
-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;