lin
2025-02-18 59b6413ea46963124667e54dd4348d204bcf94d5
longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c
....@@ -360,6 +360,7 @@
360360 bool ac_valid, vbus_valid;
361361 unsigned int rest_vol;
362362 unsigned int reg_value;
363
+ int ibat;
363364 int ret;
364365
365366 struct axp803_bat_power *bat_power = power_supply_get_drvdata(psy);
....@@ -369,7 +370,8 @@
369370 return ret;
370371 bat_det = !!(reg_value & AXP803_CHGSTATUS_BAT_PST_VALID) &&
371372 !!(reg_value & AXP803_CHGSTATUS_BAT_PRESENT);
372
- bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING);
373
+ //bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING);
374
+ ibat = axp803_get_ibat(bat_power);
373375
374376 ret = regmap_read(bat_power->regmap, AXP803_STATUS, &reg_value);
375377 if (ret)
....@@ -383,7 +385,7 @@
383385 if (bat_det) {
384386 if (rest_vol == 100)
385387 val->intval = POWER_SUPPLY_STATUS_FULL;
386
- else if (bat_charging)
388
+ else if (ibat > 0)
387389 val->intval = POWER_SUPPLY_STATUS_CHARGING;
388390 else
389391 val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;