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->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) {
|
||||
cancel_work_sync(&hba->clk_scaling.suspend_work);
|
||||
cancel_work_sync(&hba->clk_scaling.resume_work);
|
||||
|
@ -8091,6 +8098,10 @@ enable_gating:
|
|||
ufshcd_resume_clkscaling(hba);
|
||||
hba->hibern8_on_idle.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);
|
||||
out:
|
||||
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)
|
||||
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 */
|
||||
ufshcd_release_all(hba);
|
||||
goto out;
|
||||
|
|
Loading…
Add table
Reference in a new issue