Loading drivers/scsi/ufs/ufs-qcom.c +24 −0 Original line number Diff line number Diff line Loading @@ -1598,6 +1598,28 @@ static int ufs_qcom_quirk_host_pa_saveconfigtime(struct ufs_hba *hba) return err; } static inline bool ufshcd_is_valid_pm_lvl(enum ufs_pm_level lvl) { return lvl >= 0 && lvl < UFS_PM_LVL_MAX; } static void ufshcd_parse_pm_levels(struct ufs_hba *hba) { struct device *dev = hba->dev; struct device_node *np = dev->of_node; enum ufs_pm_level rpm_lvl = UFS_PM_LVL_MAX, spm_lvl = UFS_PM_LVL_MAX; if (!np) return; if (!of_property_read_u32(np, "rpm-level", &rpm_lvl) && ufshcd_is_valid_pm_lvl(rpm_lvl)) hba->rpm_lvl = rpm_lvl; if (!of_property_read_u32(np, "spm-level", &spm_lvl) && ufshcd_is_valid_pm_lvl(spm_lvl)) hba->spm_lvl = spm_lvl; } static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba) { unsigned long flags; Loading @@ -1619,6 +1641,8 @@ static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba) if (hba->dev_info.wmanufacturerid == UFS_VENDOR_WDC) hba->dev_quirks |= UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE; ufshcd_parse_pm_levels(hba); return err; } Loading Loading
drivers/scsi/ufs/ufs-qcom.c +24 −0 Original line number Diff line number Diff line Loading @@ -1598,6 +1598,28 @@ static int ufs_qcom_quirk_host_pa_saveconfigtime(struct ufs_hba *hba) return err; } static inline bool ufshcd_is_valid_pm_lvl(enum ufs_pm_level lvl) { return lvl >= 0 && lvl < UFS_PM_LVL_MAX; } static void ufshcd_parse_pm_levels(struct ufs_hba *hba) { struct device *dev = hba->dev; struct device_node *np = dev->of_node; enum ufs_pm_level rpm_lvl = UFS_PM_LVL_MAX, spm_lvl = UFS_PM_LVL_MAX; if (!np) return; if (!of_property_read_u32(np, "rpm-level", &rpm_lvl) && ufshcd_is_valid_pm_lvl(rpm_lvl)) hba->rpm_lvl = rpm_lvl; if (!of_property_read_u32(np, "spm-level", &spm_lvl) && ufshcd_is_valid_pm_lvl(spm_lvl)) hba->spm_lvl = spm_lvl; } static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba) { unsigned long flags; Loading @@ -1619,6 +1641,8 @@ static int ufs_qcom_apply_dev_quirks(struct ufs_hba *hba) if (hba->dev_info.wmanufacturerid == UFS_VENDOR_WDC) hba->dev_quirks |= UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE; ufshcd_parse_pm_levels(hba); return err; } Loading