Merge "scsi: ufs: disable ah8 during suspend and enable it on resume"
This commit is contained in:
commit
53b57a765f
1 changed files with 18 additions and 0 deletions
|
@ -7984,6 +7984,13 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
|
||||||
hba->clk_gating.is_suspended = true;
|
hba->clk_gating.is_suspended = true;
|
||||||
hba->hibern8_on_idle.is_suspended = true;
|
hba->hibern8_on_idle.is_suspended = true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable auto hibern8 to prevent unnecessary hibern8 enter/exit
|
||||||
|
* during suspend path
|
||||||
|
*/
|
||||||
|
if (ufshcd_is_auto_hibern8_supported(hba))
|
||||||
|
ufshcd_set_auto_hibern8_timer(hba, 0);
|
||||||
|
|
||||||
if (hba->clk_scaling.is_allowed) {
|
if (hba->clk_scaling.is_allowed) {
|
||||||
cancel_work_sync(&hba->clk_scaling.suspend_work);
|
cancel_work_sync(&hba->clk_scaling.suspend_work);
|
||||||
cancel_work_sync(&hba->clk_scaling.resume_work);
|
cancel_work_sync(&hba->clk_scaling.resume_work);
|
||||||
|
@ -8091,6 +8098,10 @@ enable_gating:
|
||||||
ufshcd_resume_clkscaling(hba);
|
ufshcd_resume_clkscaling(hba);
|
||||||
hba->hibern8_on_idle.is_suspended = false;
|
hba->hibern8_on_idle.is_suspended = false;
|
||||||
hba->clk_gating.is_suspended = false;
|
hba->clk_gating.is_suspended = false;
|
||||||
|
/* Re-enable auto hibern8 in case of suspend failure */
|
||||||
|
if (ufshcd_is_auto_hibern8_supported(hba))
|
||||||
|
ufshcd_set_auto_hibern8_timer(hba,
|
||||||
|
hba->hibern8_on_idle.delay_ms);
|
||||||
ufshcd_release_all(hba);
|
ufshcd_release_all(hba);
|
||||||
out:
|
out:
|
||||||
hba->pm_op_in_progress = 0;
|
hba->pm_op_in_progress = 0;
|
||||||
|
@ -8184,6 +8195,13 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
|
||||||
if (hba->clk_scaling.is_allowed)
|
if (hba->clk_scaling.is_allowed)
|
||||||
ufshcd_resume_clkscaling(hba);
|
ufshcd_resume_clkscaling(hba);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable auto hibern8 after successful resume to prevent
|
||||||
|
* unnecessary hibern8 enter/exit during resume path
|
||||||
|
*/
|
||||||
|
if (ufshcd_is_auto_hibern8_supported(hba))
|
||||||
|
ufshcd_set_auto_hibern8_timer(hba,
|
||||||
|
hba->hibern8_on_idle.delay_ms);
|
||||||
/* Schedule clock gating in case of no access to UFS device yet */
|
/* Schedule clock gating in case of no access to UFS device yet */
|
||||||
ufshcd_release_all(hba);
|
ufshcd_release_all(hba);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Add table
Reference in a new issue