If the rpm_lvl and spm_lvl sysfs attributes indicate that ufshcd_suspend() should keep the link active, re-enable clock gating instead of disabling clocks. Suggested-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx> Cc: Can Guo <cang@xxxxxxxxxxxxxx> Cc: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> Cc: Avri Altman <avri.altman@xxxxxxx> Cc: Stanley Chu <stanley.chu@xxxxxxxxxxxx> Cc: Bean Huo <beanhuo@xxxxxxxxxx> Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> --- drivers/scsi/ufs/ufshcd.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index f540b0cc253f..c96e36aab989 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8690,9 +8690,8 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) ufshcd_clk_scaling_suspend(hba, true); if (req_dev_pwr_mode == UFS_ACTIVE_PWR_MODE && - req_link_state == UIC_LINK_ACTIVE_STATE) { - goto disable_clks; - } + req_link_state == UIC_LINK_ACTIVE_STATE) + goto enable_gating; if ((req_dev_pwr_mode == hba->curr_dev_pwr_mode) && (req_link_state == hba->uic_link_state)) @@ -8754,7 +8753,6 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) if (ret) goto set_dev_active; -disable_clks: /* * Call vendor specific suspend callback. As these callbacks may access * vendor specific host controller register space call them before the