| From 4c7eeb1b44e9cca2eb12247c5e1c71cfa770b468 Mon Sep 17 00:00:00 2001 |
| From: Asutosh Das <asutoshd@codeaurora.org> |
| Date: Tue, 22 Oct 2019 18:20:21 -0700 |
| Subject: [PATCH] FROMLIST: scsi: ufs-qcom: enter and exit hibern8 during clock |
| scaling |
| |
| Qualcomm controller needs to be in hibern8 before scaling clocks. |
| This change puts the controller in hibern8 state before scaling |
| and brings it out after scaling of clocks. |
| |
| Bug: 143136976 |
| Link: https://lore.kernel.org/lkml/1571849351-819-2-git-send-email-asutoshd@codeaurora.org/ |
| Change-Id: I0a0903ff1dcc6edef1ac5ab32c3e943828b42a7e |
| Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> |
| --- |
| drivers/scsi/ufs/ufs-qcom.c | 12 +++++++++++- |
| 1 file changed, 11 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c |
| index a9dc8d7c9f78..ecc3f0f22105 100644 |
| --- a/drivers/scsi/ufs/ufs-qcom.c |
| +++ b/drivers/scsi/ufs/ufs-qcom.c |
| @@ -1218,24 +1218,34 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba *hba, |
| int err = 0; |
| |
| if (status == PRE_CHANGE) { |
| + err = ufshcd_uic_hibern8_enter(hba); |
| + if (err) |
| + return err; |
| if (scale_up) |
| err = ufs_qcom_clk_scale_up_pre_change(hba); |
| else |
| err = ufs_qcom_clk_scale_down_pre_change(hba); |
| + if (err) |
| + ufshcd_uic_hibern8_exit(hba); |
| + |
| } else { |
| if (scale_up) |
| err = ufs_qcom_clk_scale_up_post_change(hba); |
| else |
| err = ufs_qcom_clk_scale_down_post_change(hba); |
| |
| - if (err || !dev_req_params) |
| + |
| + if (err || !dev_req_params) { |
| + ufshcd_uic_hibern8_exit(hba); |
| goto out; |
| + } |
| |
| ufs_qcom_cfg_timers(hba, |
| dev_req_params->gear_rx, |
| dev_req_params->pwr_rx, |
| dev_req_params->hs_rate, |
| false); |
| + ufshcd_uic_hibern8_exit(hba); |
| } |
| |
| out: |
| -- |
| 2.17.1 |
| |