power: bq25890: update state on property read
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Mon, 4 May 2020 19:47:45 +0000 (21:47 +0200)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Sun, 10 May 2020 21:41:53 +0000 (23:41 +0200)
Edge interrupts from the charger may be lost or stuck in fault mode
since probe(). Check if something changed everytime userspace wants
some data.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/bq25890_charger.c

index c9f7877..be9de68 100644 (file)
@@ -387,6 +387,8 @@ static bool bq25890_is_adc_property(enum power_supply_property psp)
        }
 }
 
+static irqreturn_t __bq25890_handle_irq(struct bq25890_device *bq);
+
 static int bq25890_power_supply_get_property(struct power_supply *psy,
                                             enum power_supply_property psp,
                                             union power_supply_propval *val)
@@ -397,6 +399,8 @@ static int bq25890_power_supply_get_property(struct power_supply *psy,
        int ret;
 
        mutex_lock(&bq->lock);
+       /* update state in case we lost an interrupt */
+       __bq25890_handle_irq(bq);
        state = bq->state;
        do_adc_conv = !state.online && bq25890_is_adc_property(psp);
        if (do_adc_conv)