mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
power: supply: bq25890: Factor out chip state update
Pull the chip state and ADC conversion update functionality out into separate function, so it can be reused elsewhere in the driver. This is a preparatory patch, no functional change. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-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:
parent
5dd482688a
commit
d1b25092b3
@ -454,20 +454,18 @@ static int bq25890_get_vbus_voltage(struct bq25890_device *bq)
|
||||
return bq25890_find_val(ret, TBL_VBUSV);
|
||||
}
|
||||
|
||||
static int bq25890_power_supply_get_property(struct power_supply *psy,
|
||||
enum power_supply_property psp,
|
||||
union power_supply_propval *val)
|
||||
static void bq25890_update_state(struct bq25890_device *bq,
|
||||
enum power_supply_property psp,
|
||||
struct bq25890_state *state)
|
||||
{
|
||||
struct bq25890_device *bq = power_supply_get_drvdata(psy);
|
||||
struct bq25890_state state;
|
||||
bool do_adc_conv;
|
||||
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);
|
||||
*state = bq->state;
|
||||
do_adc_conv = !state->online && bq25890_is_adc_property(psp);
|
||||
if (do_adc_conv)
|
||||
bq25890_field_write(bq, F_CONV_START, 1);
|
||||
mutex_unlock(&bq->lock);
|
||||
@ -475,6 +473,17 @@ static int bq25890_power_supply_get_property(struct power_supply *psy,
|
||||
if (do_adc_conv)
|
||||
regmap_field_read_poll_timeout(bq->rmap_fields[F_CONV_START],
|
||||
ret, !ret, 25000, 1000000);
|
||||
}
|
||||
|
||||
static int bq25890_power_supply_get_property(struct power_supply *psy,
|
||||
enum power_supply_property psp,
|
||||
union power_supply_propval *val)
|
||||
{
|
||||
struct bq25890_device *bq = power_supply_get_drvdata(psy);
|
||||
struct bq25890_state state;
|
||||
int ret;
|
||||
|
||||
bq25890_update_state(bq, psp, &state);
|
||||
|
||||
switch (psp) {
|
||||
case POWER_SUPPLY_PROP_STATUS:
|
||||
|
Loading…
Reference in New Issue
Block a user