--- src-b10b3/drivers/power/supply/pm8916_lbc.c 2026-10-03 21:11:03.584000000 +0600 +++ src-b10b3d3/drivers/power/supply/pm8916_lbc.c 2026-10-04 03:03:45.276000000 +0600 @@ -366,7 +366,10 @@ ret = regmap_update_bits(chg->regmap, chg->reg[LBC_MISC] + PM8916_LBC_MISC_BOOT_DONE, PM8916_LBC_MISC_BOOT_DONE_BIT, PM8916_LBC_MISC_BOOT_DONE_BIT); - ret = ret ?: lbc_set_vdd_max(chg, chg->charge_voltage_max); + /* D3: write VDD_MAX only if it differs (v2 did not rewrite it right before the restart edge) */ + ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_VDD_MAX, &v); + if (!ret && v != (chg->charge_voltage_max - PM8916_LBC_CHGR_MIN_VOLTAGE) / PM8916_LBC_CHGR_VOLTAGE_STEP) + ret = lbc_set_vdd_max(chg, chg->charge_voltage_max); ret = ret ?: regmap_read(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_IBAT_MAX, &v); if (!ret && v != chg->ibat_code) ret = regmap_write(chg->regmap, chg->reg[LBC_CHGR] + PM8916_LBC_CHGR_IBAT_MAX, chg->ibat_code);