Re: [PATCH v2 4/8] iio: inkern: return valid type on raw to processed conversion

From: Jonathan Cameron
Date: Thu Jun 10 2021 - 05:08:48 EST


On Wed, 09 Jun 2021 17:46:58 -0400
"Liam Beguin" <liambeguin@xxxxxxxxx> wrote:

> On Wed Jun 9, 2021 at 4:32 PM EDT, Jonathan Cameron wrote:
> > On Mon, 7 Jun 2021 10:47:14 -0400
> > Liam Beguin <liambeguin@xxxxxxxxx> wrote:
> >
> > > From: Liam Beguin <lvb@xxxxxxxxxx>
> > >
> > > iio_convert_raw_to_processed_unlocked() applies the offset and scale of
> > > a channel on it's raw value.
> > > The processed value returned is always an integer. Return IIO_VAL_INT so
> > > that consumers can use this return value directly.
> > >
> > > Signed-off-by: Liam Beguin <lvb@xxxxxxxxxx>
> > This looks likely to cause breakage given that return value will go to
> > consumers directly via iio_convert_raw_to_processed()
> >
> > Looks like this will break lmp91000 which checks for error as
> >
> > if (ret)
> >
>
> IIO_VAL_INT seems like a better return value here since the consumer
> gets an integer. I can look at existing consumers and patch those too.
> Or would you rather I drop this patch?
If we were looking at actually allowing this to return other types,
then I'd agree with updating callers appropriately.

For now we aren't doing that, so the only question is success or fail.
So I'd drop this one.

Most consumers don't care about IIO types.

Jonathan

>
> > > ---
> > > drivers/iio/inkern.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
> > > index 0b5667f22b1d..00d234e87234 100644
> > > --- a/drivers/iio/inkern.c
> > > +++ b/drivers/iio/inkern.c
> > > @@ -618,7 +618,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
> > > * raw value and return.
> > > */
> > > *processed = raw * scale;
> > > - return 0;
> > > + return IIO_VAL_INT;
> > > }
> > >
> > > switch (scale_type) {
> > > @@ -652,7 +652,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
> > > return -EINVAL;
> > > }
> > >
> > > - return 0;
> > > + return IIO_VAL_INT;
> > > }
> > >
> > > int iio_convert_raw_to_processed(struct iio_channel *chan, int raw,
>