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, &reg_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