From 59b6413ea46963124667e54dd4348d204bcf94d5 Mon Sep 17 00:00:00 2001 From: lin <lin@kickpi.com> Date: Tue, 18 Feb 2025 07:47:01 +0000 Subject: [PATCH] fix(pmu): temporary solution to the problem of abnormal battery status --- longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c b/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c index e8c38da..04f6af3 100644 --- a/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c +++ b/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c @@ -360,6 +360,7 @@ bool ac_valid, vbus_valid; unsigned int rest_vol; unsigned int reg_value; + int ibat; int ret; struct axp803_bat_power *bat_power = power_supply_get_drvdata(psy); @@ -369,7 +370,8 @@ return ret; bat_det = !!(reg_value & AXP803_CHGSTATUS_BAT_PST_VALID) && !!(reg_value & AXP803_CHGSTATUS_BAT_PRESENT); - bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING); + //bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING); + ibat = axp803_get_ibat(bat_power); ret = regmap_read(bat_power->regmap, AXP803_STATUS, ®_value); if (ret) @@ -383,7 +385,7 @@ if (bat_det) { if (rest_vol == 100) val->intval = POWER_SUPPLY_STATUS_FULL; - else if (bat_charging) + else if (ibat > 0) val->intval = POWER_SUPPLY_STATUS_CHARGING; else val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; -- Gitblit v1.6.2