Merge "ufs: ufs-qcom: Fix pwr cmd timeout in s2d scenario"

This commit is contained in:
QCTECMDR Service 2024-07-19 08:25:39 -07:00 committed by Gerrit - the friendly Code Review server
commit efdf371c23

View File

@ -6057,7 +6057,6 @@ static int ufs_qcom_suspend_prepare(struct device *dev)
else
hba->spm_lvl = host->spm_lvl_default;
return ufshcd_suspend_prepare(dev);
}
@ -6071,18 +6070,40 @@ static void ufs_qcom_resume_complete(struct device *dev)
return ufshcd_resume_complete(dev);
}
static void ufs_qcom_remove_s2r_cap(struct device *dev)
{
struct ufs_hba *hba = dev_get_drvdata(dev);
hba->caps &= ~(UFSHCD_CAP_CLK_GATING |
UFSHCD_CAP_HIBERN8_WITH_CLK_GATING |
UFSHCD_CAP_CLK_SCALING |
UFSHCD_CAP_AUTO_BKOPS_SUSPEND |
UFSHCD_CAP_AGGR_POWER_COLLAPSE |
UFSHCD_CAP_WB_WITH_CLK_SCALING);
}
static void ufs_qcom_set_s2r_cap(struct device *dev)
{
struct ufs_hba *hba = dev_get_drvdata(dev);
hba->caps |= UFSHCD_CAP_CLK_GATING |
UFSHCD_CAP_HIBERN8_WITH_CLK_GATING |
UFSHCD_CAP_CLK_SCALING |
UFSHCD_CAP_AUTO_BKOPS_SUSPEND |
UFSHCD_CAP_AGGR_POWER_COLLAPSE |
UFSHCD_CAP_WB_WITH_CLK_SCALING;
}
static int ufs_qcom_system_freeze(struct device *dev)
{
struct ufs_hba *hba = NULL;
if (!is_bootdevice_ufs) {
dev_info(dev, "UFS is not boot dev.\n");
return 0;
}
hba = dev_get_drvdata(dev);
hba->spm_lvl = UFS_PM_LVL_5;
ufs_qcom_remove_s2r_cap(dev);
return ufshcd_system_freeze(dev);
}
@ -6092,7 +6113,7 @@ static int ufs_qcom_system_restore(struct device *dev)
dev_info(dev, "UFS is not boot dev.\n");
return 0;
}
ufs_qcom_set_s2r_cap(dev);
return ufshcd_system_restore(dev);
}