Hi Linus, On Wed, Mar 15, 2023 at 09:04:15AM +0100, Linus Walleij wrote: > On Tue, Mar 14, 2023 at 11:55 PM Sebastian Reichel <sre@xxxxxxxxxx> wrote: > > From: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> > > Another typical thing to monitor via an ADC line is > > the battery temperature. > > > > Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> > > Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > > > static bool gab_charge_finished(struct gab *adc_bat) > > @@ -115,6 +118,8 @@ static int gab_get_property(struct power_supply *psy, > > return read_channel(adc_bat, GAB_CURRENT, &val->intval); > > case POWER_SUPPLY_PROP_POWER_NOW: > > return read_channel(adc_bat, GAB_POWER, &val->intval); > > + case POWER_SUPPLY_PROP_TEMP: > > + return read_channel(adc_bat, GAB_TEMP, &val->intval); > > Hm. I wonder if these should rather all use read_channel_processed()? > > The difference is that you will then support ADCs with internal scaling > which is beneficial. Most of the time it doesn't matter. read_channel is a local helper, the driver uses the processed variant of iio_read_channel: static int read_channel(struct gab *adc_bat, enum gab_chan_type channel, int *result) { int ret; ret = iio_read_channel_processed(adc_bat->channel[channel], result); if (ret < 0) pr_err("read channel error\n"); else *result *= 1000; return ret; } -- Sebastian
Attachment:
signature.asc
Description: PGP signature