power: supply: bq27xxx: fix reporting critical level
authorSicelo A. Mhlongo <absicsz@gmail.com>
Mon, 2 Jan 2023 09:13:26 +0000 (11:13 +0200)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Fri, 3 Feb 2023 12:35:04 +0000 (13:35 +0100)
commite2b018cb55151cbee2c4b8f48ef731f0a683b9b6
treef3b6d89de26abf199cdda2c85af090480c83f81e
parent4651b6b72934e602202def29c88813d95716f7c7
power: supply: bq27xxx: fix reporting critical level

The EDV1/SOC1 flag is set when the battery voltage drops below the
threshold set in EEPROM. From observing the capacity_level reported by
the driver, and reading the datasheet, EDV1 remains set even when
EDVF/SOCF gets set. Thus, bq27xxx_battery_capacity_level() never reaches
the CAPACITY_LEVEL_CRITICAL code path, since CAPACITY_LEVEL_LOW takes
precedence.

This commit fixes the issue by swapping the order in which the flags are
tested. It was tested with bq27200 in the Nokia N900.

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/bq27xxx_battery.c