lkml.org 
[lkml]   [2023]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 6/6] regulator: qcom_smd: Add support to define the bootup voltage
    From


    On 1/31/2023 3:07 PM, Dmitry Baryshkov wrote:
    > On 13/01/2023 17:03, devi priya wrote:
    >> Kernel does not know the initial voltage set by the bootloaders.
    >> During regulator registration, the voltage variable is just declared
    >> and it is zero. Based on that, the regulator framework considers current
    >> the voltage as zero and tries to bring up each regulator to minimum
    >> the supported voltage.
    >>
    >> This introduces a dip in the voltage during kernel boot and gets
    >> stabilized once the voltage scaling comes into picture.
    >>
    >> To avoid the voltage dip, adding support to define the
    >> bootup voltage set by the boodloaders and based on it, regulator
    >> framework understands that proper voltage is already set
    >>
    >> Co-developed-by: Praveenkumar I <quic_ipkumar@quicinc.com>
    >> Signed-off-by: Praveenkumar I <quic_ipkumar@quicinc.com>
    >> Signed-off-by: devi priya <quic_devipriy@quicinc.com>
    >> ---
    >>   drivers/regulator/qcom_smd-regulator.c | 6 +++++-
    >>   1 file changed, 5 insertions(+), 1 deletion(-)
    >>
    >> diff --git a/drivers/regulator/qcom_smd-regulator.c
    >> b/drivers/regulator/qcom_smd-regulator.c
    >> index 1eb17d378897..49a36b07397c 100644
    >> --- a/drivers/regulator/qcom_smd-regulator.c
    >> +++ b/drivers/regulator/qcom_smd-regulator.c
    >> @@ -800,6 +800,7 @@ struct rpm_regulator_data {
    >>       u32 id;
    >>       const struct regulator_desc *desc;
    >>       const char *supply;
    >> +    int boot_uV; /* To store the bootup voltage set by bootloaders */
    >>   };
    >>   static const struct rpm_regulator_data rpm_mp5496_regulators[] = {
    >> @@ -809,7 +810,7 @@ static const struct rpm_regulator_data
    >> rpm_mp5496_regulators[] = {
    >>   };
    >>   static const struct rpm_regulator_data
    >> rpm_ipq9574_mp5496_regulators[] = {
    >> -    { "s1", QCOM_SMD_RPM_SMPA, 1, &ipq9574_mp5496_smpa1, "s1" },
    >> +    { "s1", QCOM_SMD_RPM_SMPA, 1, &ipq9574_mp5496_smpa1, "s1", 875000 },
    >
    > I think this is a peculiarity of the particular board that than a
    > property of the PMIC. Please describe this in the board or SoC DTS if
    > the value can not be read using the software .
    >
    The bootup voltage is actually blown into the OTP register of the PMIC
    and so, it remains the same across boards for IPQ9574 SoC
    >>       {}
    >>   };
    >> @@ -1394,6 +1395,9 @@ static int rpm_regulator_init_vreg(struct
    >> qcom_rpm_reg *vreg, struct device *dev
    >>       vreg->type    = rpm_data->type;
    >>       vreg->id    = rpm_data->id;
    >> +    if (rpm_data->boot_uV)
    >> +        vreg->uV = rpm_data->boot_uV;
    >> +
    >>       memcpy(&vreg->desc, rpm_data->desc, sizeof(vreg->desc));
    >>       vreg->desc.name = rpm_data->name;
    >>       vreg->desc.supply_name = rpm_data->supply;
    >
    Best Regards,
    Devi Priya

    \
     
     \ /
      Last update: 2023-03-27 00:07    [W:5.708 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site