aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power/bq27x00_battery.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/power/bq27x00_battery.c')
-rw-r--r--drivers/power/bq27x00_battery.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 98bf5676318d..1ed6ea0bad6e 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -62,11 +62,10 @@
62 62
63#define BQ27500_REG_SOC 0x2C 63#define BQ27500_REG_SOC 0x2C
64#define BQ27500_REG_DCAP 0x3C /* Design capacity */ 64#define BQ27500_REG_DCAP 0x3C /* Design capacity */
65#define BQ27500_FLAG_DSG BIT(0) /* Discharging */ 65#define BQ27500_FLAG_DSC BIT(0)
66#define BQ27500_FLAG_SOCF BIT(1) /* State-of-Charge threshold final */ 66#define BQ27500_FLAG_SOCF BIT(1) /* State-of-Charge threshold final */
67#define BQ27500_FLAG_SOC1 BIT(2) /* State-of-Charge threshold 1 */ 67#define BQ27500_FLAG_SOC1 BIT(2) /* State-of-Charge threshold 1 */
68#define BQ27500_FLAG_CHG BIT(8) /* Charging */ 68#define BQ27500_FLAG_FC BIT(9)
69#define BQ27500_FLAG_FC BIT(9) /* Fully charged */
70 69
71#define BQ27000_RS 20 /* Resistor sense */ 70#define BQ27000_RS 20 /* Resistor sense */
72 71
@@ -312,7 +311,7 @@ static void bq27x00_update(struct bq27x00_device_info *di)
312 struct bq27x00_reg_cache cache = {0, }; 311 struct bq27x00_reg_cache cache = {0, };
313 bool is_bq27500 = di->chip == BQ27500; 312 bool is_bq27500 = di->chip == BQ27500;
314 313
315 cache.flags = bq27x00_read(di, BQ27x00_REG_FLAGS, is_bq27500); 314 cache.flags = bq27x00_read(di, BQ27x00_REG_FLAGS, !is_bq27500);
316 if (cache.flags >= 0) { 315 if (cache.flags >= 0) {
317 if (!is_bq27500 && (cache.flags & BQ27000_FLAG_CI)) { 316 if (!is_bq27500 && (cache.flags & BQ27000_FLAG_CI)) {
318 dev_info(di->dev, "battery is not calibrated! ignoring capacity values\n"); 317 dev_info(di->dev, "battery is not calibrated! ignoring capacity values\n");
@@ -401,14 +400,10 @@ static int bq27x00_battery_status(struct bq27x00_device_info *di,
401 if (di->chip == BQ27500) { 400 if (di->chip == BQ27500) {
402 if (di->cache.flags & BQ27500_FLAG_FC) 401 if (di->cache.flags & BQ27500_FLAG_FC)
403 status = POWER_SUPPLY_STATUS_FULL; 402 status = POWER_SUPPLY_STATUS_FULL;
404 else if (di->cache.flags & BQ27500_FLAG_DSG) 403 else if (di->cache.flags & BQ27500_FLAG_DSC)
405 status = POWER_SUPPLY_STATUS_DISCHARGING; 404 status = POWER_SUPPLY_STATUS_DISCHARGING;
406 else if (di->cache.flags & BQ27500_FLAG_CHG)
407 status = POWER_SUPPLY_STATUS_CHARGING;
408 else if (power_supply_am_i_supplied(&di->bat))
409 status = POWER_SUPPLY_STATUS_NOT_CHARGING;
410 else 405 else
411 status = POWER_SUPPLY_STATUS_UNKNOWN; 406 status = POWER_SUPPLY_STATUS_CHARGING;
412 } else { 407 } else {
413 if (di->cache.flags & BQ27000_FLAG_FC) 408 if (di->cache.flags & BQ27000_FLAG_FC)
414 status = POWER_SUPPLY_STATUS_FULL; 409 status = POWER_SUPPLY_STATUS_FULL;