Message ID | 1655755943-28594-3-git-send-email-quic_khsieh@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | eDP/DP Phy vdda realted function | expand |
On 20/06/2022 23:12, Kuogee Hsieh wrote: > This patch add regulator_set_load() before enable regulator at > DP phy driver. > > Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com> > Reviewed-by: Stephen Boyd <swboyd@chromium.org> > Reviewed-by: Douglas Anderson <dianders@chromium.org> > --- > drivers/phy/qualcomm/phy-qcom-qmp.c | 40 ++++++++++++++++++++++++++++--------- This was not rebased. There is no phy-qcom-qmp.c in phy-next.
On 6/20/2022 1:15 PM, Dmitry Baryshkov wrote: > On 20/06/2022 23:12, Kuogee Hsieh wrote: >> This patch add regulator_set_load() before enable regulator at >> DP phy driver. >> >> Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com> >> Reviewed-by: Stephen Boyd <swboyd@chromium.org> >> Reviewed-by: Douglas Anderson <dianders@chromium.org> >> --- >> drivers/phy/qualcomm/phy-qcom-qmp.c | 40 >> ++++++++++++++++++++++++++++--------- > > This was not rebased. There is no phy-qcom-qmp.c in phy-next. is https://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git phy-next tree? What exactly procedures I have to do base on Vinod's comment? Thanks,
On 20/06/2022 23:22, Kuogee Hsieh wrote: > > On 6/20/2022 1:15 PM, Dmitry Baryshkov wrote: >> On 20/06/2022 23:12, Kuogee Hsieh wrote: >>> This patch add regulator_set_load() before enable regulator at >>> DP phy driver. >>> >>> Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com> >>> Reviewed-by: Stephen Boyd <swboyd@chromium.org> >>> Reviewed-by: Douglas Anderson <dianders@chromium.org> >>> --- >>> drivers/phy/qualcomm/phy-qcom-qmp.c | 40 >>> ++++++++++++++++++++++++++++--------- >> >> This was not rebased. There is no phy-qcom-qmp.c in phy-next. > > is https://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git > phy-next tree? Yes. The 'next' branch. The file in question was removed in the commit a50280ead1b6a56f3b4738808a8c2be7c2c63666
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c index c7309e981..e5836ea 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c @@ -3119,6 +3119,17 @@ static const struct qmp_phy_init_tbl sm8450_qmp_gen4x2_pcie_pcs_misc_tbl[] = { QMP_PHY_INIT_CFG(QPHY_V5_20_PCS_PCIE_G4_PRE_GAIN, 0x2e), }; +/* list of regulators */ +struct qmp_regulator_data { + const char *name; + unsigned int enable_load; +}; + +struct qmp_regulator_data qmp_phy_vreg_l[] = { + { .name = "vdda-phy", .enable_load = 21800 }, + { .name = "vdda-pll", .enable_load = 36000 }, +}; + struct qmp_phy; /* struct qmp_phy_cfg - per-PHY initialization config */ @@ -3173,7 +3184,7 @@ struct qmp_phy_cfg { const char * const *reset_list; int num_resets; /* regulators to be requested */ - const char * const *vreg_list; + const struct qmp_regulator_data *vreg_list; int num_vregs; /* array of registers with different offsets */ @@ -3385,11 +3396,6 @@ static const char * const sdm845_pciephy_reset_l[] = { "phy", }; -/* list of regulators */ -static const char * const qmp_phy_vreg_l[] = { - "vdda-phy", "vdda-pll", -}; - static const struct qmp_phy_cfg ipq8074_usb3phy_cfg = { .type = PHY_TYPE_USB3, .nlanes = 1, @@ -5561,16 +5567,32 @@ static int qcom_qmp_phy_vreg_init(struct device *dev, const struct qmp_phy_cfg * { struct qcom_qmp *qmp = dev_get_drvdata(dev); int num = cfg->num_vregs; - int i; + int ret, i; qmp->vregs = devm_kcalloc(dev, num, sizeof(*qmp->vregs), GFP_KERNEL); if (!qmp->vregs) return -ENOMEM; for (i = 0; i < num; i++) - qmp->vregs[i].supply = cfg->vreg_list[i]; + qmp->vregs[i].supply = cfg->vreg_list[i].name; - return devm_regulator_bulk_get(dev, num, qmp->vregs); + ret = devm_regulator_bulk_get(dev, num, qmp->vregs); + if (ret) { + dev_err(dev, "failed at devm_regulator_bulk_get\n"); + return ret; + } + + for (i = 0; i < num; i++) { + ret = regulator_set_load(qmp->vregs[i].consumer, + cfg->vreg_list[i].enable_load); + if (ret) { + dev_err(dev, "failed to set load at %s\n", + qmp->vregs[i].supply); + return ret; + } + } + + return 0; } static int qcom_qmp_phy_reset_init(struct device *dev, const struct qmp_phy_cfg *cfg)