Commit 9489d1bd authored by Sebastian Reichel's avatar Sebastian Reichel

power: supply: generic-adc-battery: simplify read_channel logic

Drop mostly useless gab_prop_to_chan() function by directly
supplying the correct enum value to read_channel().
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarMatti Vaittinen <mazziesaccount@gmail.com>
Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
parent 1b27bf79
...@@ -86,31 +86,12 @@ static bool gab_charge_finished(struct gab *adc_bat) ...@@ -86,31 +86,12 @@ static bool gab_charge_finished(struct gab *adc_bat)
return gpiod_get_value(adc_bat->charge_finished); return gpiod_get_value(adc_bat->charge_finished);
} }
static enum gab_chan_type gab_prop_to_chan(enum power_supply_property psp) static int read_channel(struct gab *adc_bat, enum gab_chan_type channel,
{
switch (psp) {
case POWER_SUPPLY_PROP_POWER_NOW:
return GAB_POWER;
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
return GAB_VOLTAGE;
case POWER_SUPPLY_PROP_CURRENT_NOW:
return GAB_CURRENT;
default:
WARN_ON(1);
break;
}
return GAB_POWER;
}
static int read_channel(struct gab *adc_bat, enum power_supply_property psp,
int *result) int *result)
{ {
int ret; int ret;
int chan_index;
chan_index = gab_prop_to_chan(psp); ret = iio_read_channel_processed(adc_bat->channel[channel], result);
ret = iio_read_channel_processed(adc_bat->channel[chan_index],
result);
if (ret < 0) if (ret < 0)
pr_err("read channel error\n"); pr_err("read channel error\n");
else else
...@@ -123,26 +104,20 @@ static int gab_get_property(struct power_supply *psy, ...@@ -123,26 +104,20 @@ static int gab_get_property(struct power_supply *psy,
enum power_supply_property psp, union power_supply_propval *val) enum power_supply_property psp, union power_supply_propval *val)
{ {
struct gab *adc_bat = to_generic_bat(psy); struct gab *adc_bat = to_generic_bat(psy);
int result = 0;
int ret = 0;
switch (psp) { switch (psp) {
case POWER_SUPPLY_PROP_STATUS: case POWER_SUPPLY_PROP_STATUS:
val->intval = adc_bat->status; val->intval = adc_bat->status;
return 0; return 0;
case POWER_SUPPLY_PROP_VOLTAGE_NOW: case POWER_SUPPLY_PROP_VOLTAGE_NOW:
return read_channel(adc_bat, GAB_VOLTAGE, &val->intval);
case POWER_SUPPLY_PROP_CURRENT_NOW: case POWER_SUPPLY_PROP_CURRENT_NOW:
return read_channel(adc_bat, GAB_CURRENT, &val->intval);
case POWER_SUPPLY_PROP_POWER_NOW: case POWER_SUPPLY_PROP_POWER_NOW:
ret = read_channel(adc_bat, psp, &result); return read_channel(adc_bat, GAB_POWER, &val->intval);
if (ret < 0)
goto err;
val->intval = result;
break;
default: default:
return -EINVAL; return -EINVAL;
} }
err:
return ret;
} }
static void gab_work(struct work_struct *work) static void gab_work(struct work_struct *work)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment