mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 23:55:36 +07:00
2b5a4b4bf2
Relying on the (dis)charge current reporting for reporting FULL back to userspace does not work really well and often leads to the reported status getting stuck at e.g. 98/99% (the fuelgauge is not perfect) for hours. What happens is that when the battery is full the axp288 keeps charging it with a very low current. Until it is really really full and once really really full, some inaccuracies in the adc lead to it then sometimes reporting a small discharging rate, even though an external pwr source is used. So we end up with a status of "charging" for hours after the battery is actually already full and sometimes this then flip-flops to discharging. This commit fixes this by first checking if a valid Vbus is present and if it is present using the fuel-gauge's reported percentage to check for a full battery. This commit also changes how get_status() determines if the battery is charging or discharging when not reporting it as full. We still use the current direction for this, but instead of reading 4 extra registers for this (2 16 bit regs), simplify things by using the current-direction bit in the power-status register, which already gets read anyways. This also reduces the amount of i2c reads to 1 when on battery and 2 when a valid Vbus is present. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> |
||
---|---|---|
.. | ||
88pm860x_battery.c | ||
88pm860x_charger.c | ||
ab8500_bmdata.c | ||
ab8500_btemp.c | ||
ab8500_charger.c | ||
ab8500_fg.c | ||
abx500_chargalg.c | ||
act8945a_charger.c | ||
apm_power.c | ||
axp20x_ac_power.c | ||
axp20x_battery.c | ||
axp20x_usb_power.c | ||
axp288_charger.c | ||
axp288_fuel_gauge.c | ||
bq27xxx_battery_hdq.c | ||
bq27xxx_battery_i2c.c | ||
bq27xxx_battery.c | ||
bq2415x_charger.c | ||
bq24190_charger.c | ||
bq24257_charger.c | ||
bq24735-charger.c | ||
bq25890_charger.c | ||
charger-manager.c | ||
collie_battery.c | ||
cpcap-battery.c | ||
cpcap-charger.c | ||
da9030_battery.c | ||
da9052-battery.c | ||
da9150-charger.c | ||
da9150-fg.c | ||
ds2760_battery.c | ||
ds2780_battery.c | ||
ds2781_battery.c | ||
ds2782_battery.c | ||
generic-adc-battery.c | ||
goldfish_battery.c | ||
gpio-charger.c | ||
ipaq_micro_battery.c | ||
isp1704_charger.c | ||
jz4740-battery.c | ||
Kconfig | ||
lego_ev3_battery.c | ||
lp8727_charger.c | ||
lp8788-charger.c | ||
ltc2941-battery-gauge.c | ||
ltc3651-charger.c | ||
Makefile | ||
max1721x_battery.c | ||
max8903_charger.c | ||
max8925_power.c | ||
max8997_charger.c | ||
max8998_charger.c | ||
max14577_charger.c | ||
max14656_charger_detector.c | ||
max17040_battery.c | ||
max17042_battery.c | ||
max77693_charger.c | ||
olpc_battery.c | ||
pcf50633-charger.c | ||
pda_power.c | ||
pm2301_charger.c | ||
pm2301_charger.h | ||
pmu_battery.c | ||
power_supply_core.c | ||
power_supply_leds.c | ||
power_supply_sysfs.c | ||
power_supply.h | ||
qcom_smbb.c | ||
rt5033_battery.c | ||
rt9455_charger.c | ||
rx51_battery.c | ||
s3c_adc_battery.c | ||
sbs-battery.c | ||
sbs-charger.c | ||
sbs-manager.c | ||
smb347-charger.c | ||
test_power.c | ||
tosa_battery.c | ||
tps65090-charger.c | ||
tps65217_charger.c | ||
twl4030_charger.c | ||
twl4030_madc_battery.c | ||
wm97xx_battery.c | ||
wm831x_backup.c | ||
wm831x_power.c | ||
wm8350_power.c | ||
z2_battery.c |