On Tue, May 24, 2022 at 09:54:48AM +0200, Linus Walleij wrote: > When introducing support for processed channels I needed > to invert the expression: > > if (!iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || > !iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE)) > dev_err(dev, "source channel does not support raw/scale\n"); > > To the inverse, meaning detect when we can usse raw+scale > rather than when we can not. This was the result: > > if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || > iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE)) > dev_info(dev, "using raw+scale source channel\n"); > > Ooops. Spot the error. Yep old George Boole came up and bit me. > That should be an &&. > > The current code "mostly works" because we have not run into > systems supporting only raw but not scale or only scale but not > raw, and I doubt there are few using the rescaler on anything > such, but let's fix the logic. Maybe `iio: afe: rescale: Fix boolean logic bug` if you're resending, otherwise, Reviewed-by: Liam Beguin <liambeguin@xxxxxxxxx> Thanks, Liam > Cc: Liam Beguin <liambeguin@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 53ebee949980 ("iio: afe: iio-rescale: Support processed channels") > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > --- > drivers/iio/afe/iio-rescale.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iio/afe/iio-rescale.c b/drivers/iio/afe/iio-rescale.c > index 7e511293d6d1..dc426e1484f0 100644 > --- a/drivers/iio/afe/iio-rescale.c > +++ b/drivers/iio/afe/iio-rescale.c > @@ -278,7 +278,7 @@ static int rescale_configure_channel(struct device *dev, > chan->ext_info = rescale->ext_info; > chan->type = rescale->cfg->type; > > - if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) || > + if (iio_channel_has_info(schan, IIO_CHAN_INFO_RAW) && > iio_channel_has_info(schan, IIO_CHAN_INFO_SCALE)) { > dev_info(dev, "using raw+scale source channel\n"); > } else if (iio_channel_has_info(schan, IIO_CHAN_INFO_PROCESSED)) { > -- > 2.35.3 >