mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
UPSTREAM: scsi: ufs: 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.
Link: https://lore.kernel.org/r/212b7aaf6d834c4a8c682fdac4a59b84013ed573.1632818942.git.nguyenb@codeaurora.org
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Bao D. Nguyen <nguyenb@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 234653003
(cherry picked from commit a0cea83332)
Change-Id: I2d955e12f487bbf88bccf1d9be3c57df8ef82e48
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Bart Van Assche
parent
a30a079b7a
commit
a23b44eb9a
@@ -1216,24 +1216,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:
|
||||
|
||||
Reference in New Issue
Block a user