power: supply: bq25890: Always take HiZ mode into account for ADC rate
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>
This commit is contained in:
committed by
Sebastian Reichel
parent
4413f9e913
commit
dee0df8496
@@ -467,7 +467,7 @@ static void bq25890_update_state(struct bq25890_device *bq,
|
|||||||
/* update state in case we lost an interrupt */
|
/* update state in case we lost an interrupt */
|
||||||
__bq25890_handle_irq(bq);
|
__bq25890_handle_irq(bq);
|
||||||
*state = bq->state;
|
*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)
|
if (do_adc_conv)
|
||||||
bq25890_field_write(bq, F_CONV_START, 1);
|
bq25890_field_write(bq, F_CONV_START, 1);
|
||||||
mutex_unlock(&bq->lock);
|
mutex_unlock(&bq->lock);
|
||||||
@@ -956,7 +956,7 @@ static int bq25890_hw_init(struct bq25890_device *bq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Configure ADC for continuous conversions when charging */
|
/* 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) {
|
if (ret < 0) {
|
||||||
dev_dbg(bq->dev, "Config ADC failed %d\n", ret);
|
dev_dbg(bq->dev, "Config ADC failed %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
Reference in New Issue
Block a user