diff options
| author | Venkat Gopalakrishnan <venkatg@codeaurora.org> | 2016-10-05 14:23:55 -0700 |
|---|---|---|
| committer | Venkat Gopalakrishnan <venkatg@codeaurora.org> | 2016-10-05 14:27:33 -0700 |
| commit | 48ecffa1a06b133d1ba1c5e7bba0caa455b6c4fc (patch) | |
| tree | 53b60793791012e038278aee65584e5a5ae719ce | |
| parent | 057bdafd976ca7609ed223dbd4473d535bcb6459 (diff) | |
Revert "scsi: ufs: gate ref_clk during aggressive clk gating"
This reverts commit ca91fa16a7af ("scsi: ufs: gate ref_clk during
aggressive clk gating").
Reverting this change as its causing stability issues.
Change-Id: Ia04d33d84b5622179f7a496daee5584d4e2dde91
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
| -rw-r--r-- | drivers/scsi/ufs/ufs-qcom.c | 19 | ||||
| -rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 7 |
2 files changed, 12 insertions, 14 deletions
diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c index 1a1dd804ffb3..ad4b6ffef36e 100644 --- a/drivers/scsi/ufs/ufs-qcom.c +++ b/drivers/scsi/ufs/ufs-qcom.c @@ -1498,14 +1498,10 @@ static int ufs_qcom_setup_clocks(struct ufs_hba *hba, bool on, /* M-PHY RMMI interface clocks can be turned off */ ufs_qcom_phy_disable_iface_clk(host->generic_phy); - /* - * If auto hibern8 is supported then the link will already - * be in hibern8 state and the ref clock can be gated. - */ - if (ufshcd_is_auto_hibern8_supported(hba) || - !ufs_qcom_is_link_active(hba)) { - /* turn off UFS local PHY ref_clk */ - ufs_qcom_phy_disable_ref_clk(host->generic_phy); + if (!ufs_qcom_is_link_active(hba)) { + if (!is_gating_context) + /* turn off UFS local PHY ref_clk */ + ufs_qcom_phy_disable_ref_clk(host->generic_phy); /* disable device ref_clk */ ufs_qcom_dev_ref_clk_ctrl(host, false); } @@ -1960,6 +1956,13 @@ static int ufs_qcom_init(struct ufs_hba *hba) host->hba = hba; ufshcd_set_variant(hba, host); + /* + * voting/devoting device ref_clk source is time consuming hence + * skip devoting it during aggressive clock gating. This clock + * will still be gated off during runtime suspend. + */ + hba->no_ref_clk_gating = true; + err = ufs_qcom_ice_get_dev(host); if (err == -EPROBE_DEFER) { /* diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 311a4ea24973..d478767ad3dd 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1346,12 +1346,7 @@ static void ufshcd_gate_work(struct work_struct *work) ufshcd_set_link_hibern8(hba); } - /* - * If auto hibern8 is supported then the link will already - * be in hibern8 state and the ref clock can be gated. - */ - if ((ufshcd_is_auto_hibern8_supported(hba) || - !ufshcd_is_link_active(hba)) && !hba->no_ref_clk_gating) + if (!ufshcd_is_link_active(hba) && !hba->no_ref_clk_gating) ufshcd_disable_clocks(hba, true); else /* If link is active, device ref_clk can't be switched off */ |
