Message ID | 5c8e8f4c5a7fc2cecb62342f9a964f69f3fde7ae.1588517058.git.mirq-linux@rere.qmqm.pl (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | power: supply: bq25890: fix and extend | expand |
Hi, On Sun, May 03, 2020 at 05:21:12PM +0200, Michał Mirosław wrote: > 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> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> -- Sebastian > drivers/power/supply/bq25890_charger.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/power/supply/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c > index 3b02fa80aedd..e4368d01396a 100644 > --- a/drivers/power/supply/bq25890_charger.c > +++ b/drivers/power/supply/bq25890_charger.c > @@ -389,6 +389,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) > @@ -399,6 +401,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) > -- > 2.20.1 >
diff --git a/drivers/power/supply/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c index 3b02fa80aedd..e4368d01396a 100644 --- a/drivers/power/supply/bq25890_charger.c +++ b/drivers/power/supply/bq25890_charger.c @@ -389,6 +389,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) @@ -399,6 +401,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)
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> --- drivers/power/supply/bq25890_charger.c | 4 ++++ 1 file changed, 4 insertions(+)