Loading drivers/scsi/ufs/ufs-qcom.c +24 −0 Original line number Diff line number Diff line Loading @@ -858,6 +858,10 @@ static int ufs_qcom_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, false); if (host->vccq2_parent && !hba->auto_bkops_enabled) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, false); if (ufs_qcom_is_link_off(hba)) { /* Assert PHY soft reset */ ufs_qcom_assert_reset(hba); Loading Loading @@ -897,6 +901,9 @@ static int ufs_qcom_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) if (host->vccq_parent) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, true); if (host->vccq2_parent) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, true); err = ufs_qcom_enable_lane_clks(host); if (err) goto out; Loading Loading @@ -2077,6 +2084,8 @@ static int ufs_qcom_parse_reg_info(struct ufs_qcom_host *host, char *name, vreg->min_uV = VDDP_REF_CLK_MIN_UV; else if (!strcmp(name, "qcom,vccq-parent")) vreg->min_uV = 0; else if (!strcmp(name, "qcom,vccq2-parent")) vreg->min_uV = 0; ret = 0; } Loading @@ -2089,6 +2098,8 @@ static int ufs_qcom_parse_reg_info(struct ufs_qcom_host *host, char *name, vreg->max_uV = VDDP_REF_CLK_MAX_UV; else if (!strcmp(name, "qcom,vccq-parent")) vreg->max_uV = 0; else if (!strcmp(name, "qcom,vccq2-parent")) vreg->max_uV = 0; ret = 0; } Loading Loading @@ -2236,6 +2247,17 @@ static int ufs_qcom_init(struct ufs_hba *hba) } } err = ufs_qcom_parse_reg_info(host, "qcom,vccq2-parent", &host->vccq2_parent); if (host->vccq2_parent) { err = ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, true); if (err) { dev_err(dev, "%s: failed vccq2-parent set load: %d\n", __func__, err); goto out_disable_vddp; } } err = ufs_qcom_init_lane_clks(host); if (err) goto out_set_load_vccq_parent; Loading Loading @@ -2268,6 +2290,8 @@ static int ufs_qcom_init(struct ufs_hba *hba) out_set_load_vccq_parent: if (host->vccq_parent) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, false); if (host->vccq2_parent) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, false); out_disable_vddp: if (host->vddp_ref_clk) ufs_qcom_disable_vreg(dev, host->vddp_ref_clk); Loading drivers/scsi/ufs/ufs-qcom.h +1 −0 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ struct ufs_qcom_host { struct request *req_pending; struct ufs_vreg *vddp_ref_clk; struct ufs_vreg *vccq_parent; struct ufs_vreg *vccq2_parent; bool work_pending; bool is_phy_pwr_on; bool err_occurred; Loading Loading
drivers/scsi/ufs/ufs-qcom.c +24 −0 Original line number Diff line number Diff line Loading @@ -858,6 +858,10 @@ static int ufs_qcom_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, false); if (host->vccq2_parent && !hba->auto_bkops_enabled) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, false); if (ufs_qcom_is_link_off(hba)) { /* Assert PHY soft reset */ ufs_qcom_assert_reset(hba); Loading Loading @@ -897,6 +901,9 @@ static int ufs_qcom_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) if (host->vccq_parent) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, true); if (host->vccq2_parent) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, true); err = ufs_qcom_enable_lane_clks(host); if (err) goto out; Loading Loading @@ -2077,6 +2084,8 @@ static int ufs_qcom_parse_reg_info(struct ufs_qcom_host *host, char *name, vreg->min_uV = VDDP_REF_CLK_MIN_UV; else if (!strcmp(name, "qcom,vccq-parent")) vreg->min_uV = 0; else if (!strcmp(name, "qcom,vccq2-parent")) vreg->min_uV = 0; ret = 0; } Loading @@ -2089,6 +2098,8 @@ static int ufs_qcom_parse_reg_info(struct ufs_qcom_host *host, char *name, vreg->max_uV = VDDP_REF_CLK_MAX_UV; else if (!strcmp(name, "qcom,vccq-parent")) vreg->max_uV = 0; else if (!strcmp(name, "qcom,vccq2-parent")) vreg->max_uV = 0; ret = 0; } Loading Loading @@ -2236,6 +2247,17 @@ static int ufs_qcom_init(struct ufs_hba *hba) } } err = ufs_qcom_parse_reg_info(host, "qcom,vccq2-parent", &host->vccq2_parent); if (host->vccq2_parent) { err = ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, true); if (err) { dev_err(dev, "%s: failed vccq2-parent set load: %d\n", __func__, err); goto out_disable_vddp; } } err = ufs_qcom_init_lane_clks(host); if (err) goto out_set_load_vccq_parent; Loading Loading @@ -2268,6 +2290,8 @@ static int ufs_qcom_init(struct ufs_hba *hba) out_set_load_vccq_parent: if (host->vccq_parent) ufs_qcom_config_vreg(hba->dev, host->vccq_parent, false); if (host->vccq2_parent) ufs_qcom_config_vreg(hba->dev, host->vccq2_parent, false); out_disable_vddp: if (host->vddp_ref_clk) ufs_qcom_disable_vreg(dev, host->vddp_ref_clk); Loading
drivers/scsi/ufs/ufs-qcom.h +1 −0 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ struct ufs_qcom_host { struct request *req_pending; struct ufs_vreg *vddp_ref_clk; struct ufs_vreg *vccq_parent; struct ufs_vreg *vccq2_parent; bool work_pending; bool is_phy_pwr_on; bool err_occurred; Loading