power: supply: bq25890: Always take HiZ mode into account for ADC rate
authorHans de Goede <hdegoede@redhat.com>
Mon, 28 Nov 2022 09:28:53 +0000 (10:28 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Mon, 2 Jan 2023 23:04:26 +0000 (00:04 +0100)
The code to check if F_CONV_RATE has been set, or if a manual ADC
conversion needs to be triggered, as well as the code to set
the initial F_CONV_RATE value at probe both where not taking
HiZ mode into account. Add checks for this.

Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/bq25890_charger.c

index 0d188c0..9b3a173 100644 (file)
@@ -467,7 +467,7 @@ static void bq25890_update_state(struct bq25890_device *bq,
        /* 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);
+       do_adc_conv = (!state->online || state->hiz) && bq25890_is_adc_property(psp);
        if (do_adc_conv)
                bq25890_field_write(bq, F_CONV_START, 1);
        mutex_unlock(&bq->lock);
@@ -956,7 +956,7 @@ static int bq25890_hw_init(struct bq25890_device *bq)
        }
 
        /* Configure ADC for continuous conversions when charging */
-       ret = bq25890_field_write(bq, F_CONV_RATE, !!bq->state.online);
+       ret = bq25890_field_write(bq, F_CONV_RATE, bq->state.online && !bq->state.hiz);
        if (ret < 0) {
                dev_dbg(bq->dev, "Config ADC failed %d\n", ret);
                return ret;