Re: [PATCH] power: supply: pf1550: enable charging when battery profile exists

Frank Li <[email protected]>
Newsgroups dev.linux.lists.imx,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm,org.kernel.vger.stable
Message-ID <amN_dZj1p4KWcawu@SMW015318>
On Fri, Jul 24, 2026 at 05:03:41PM +0800, raoxu wrote:
> [You don't often get email from [email protected]. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> From: Xu Rao <[email protected]>
>
> PF1550 starts in charger mode 1, where charging is disabled. The driver
> comment says that mode 2 should be selected for applications using a
> battery, but the condition is inverted: PF1550_CHG_BAT_ON is written only
> when power_supply_get_battery_info() fails.
>
> Consequently, a board with a valid monitored-battery profile is left in
> the default charger-off mode, while a board without battery information
> enables charging with the fallback voltage.
>
> Select mode 2 when battery information is available. Also release the
> battery-info objects after use.
>
> Fixes: 4b6b6433a97d ("power: supply: pf1550: add battery charger support")
> Cc: [email protected]
> Signed-off-by: Xu Rao <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>  drivers/power/supply/pf1550-charger.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/power/supply/pf1550-charger.c b/drivers/power/supply/pf1550-charger.c
> index 41036f4cb64a..f698becd662a 100644
> --- a/drivers/power/supply/pf1550-charger.c
> +++ b/drivers/power/supply/pf1550-charger.c
> @@ -514,7 +514,10 @@ static int pf1550_reg_init(struct pf1550_charger *chg)
>          * a battery. The other supported mode is mode 2, the charger is turned
>          * on to charge a battery when present.
>          */
> -       if (power_supply_get_battery_info(chg->charger, &info)) {
> +       ret = power_supply_get_battery_info(chg->charger, &info);
> +       if (!ret) {
> +               power_supply_put_battery_info(chg->charger, info);
> +
>                 ret = regmap_write(chg->pf1550->regmap,
>                                    PF1550_CHARG_REG_CHG_OPER,
>                                    PF1550_CHG_BAT_ON);
> @@ -540,10 +543,12 @@ static void pf1550_dt_parse_dev_info(struct pf1550_charger *chg)
>                                      &chg->thermal_regulation_temp))
>                 chg->thermal_regulation_temp = PF1550_DEFAULT_THERMAL_TEMP;
>
> -       if (power_supply_get_battery_info(chg->charger, &info))
> +       if (power_supply_get_battery_info(chg->charger, &info)) {
>                 chg->constant_volt = PF1550_DEFAULT_CONSTANT_VOLT;
> -       else
> +       } else {
>                 chg->constant_volt = info->constant_charge_voltage_max_uv;
> +               power_supply_put_battery_info(chg->charger, info);
> +       }
>  }
>
>  static int pf1550_charger_probe(struct platform_device *pdev)
> --
> 2.50.1
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.