On Sun, Dec 27, 2020 at 7:54 PM Chris Lesiak <chris.lesiak@xxxxxxxxx> wrote: > Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > But do you agree with the general stance that we should > > give precedence to using iio_read_channel_processed() > > and multiply the result with 1000? It should work with > > any driver I think. > > In order to preserve resolution of the microVolt value for existing code, Aha you mean that iio_read_channel_processed() loses precision when converting raw to scaled? > I'd prefer a solution similar to the existing implementation of > iio_read_channel_processed. That seems like the wrong way to work around a problem in the core. If iio_read_channel_processed() loses precision we should fix iio_read_channel_processed() and not try to work around the problem in the consumers. It's fine to fix all the consumers in the kernel. What about changing the signature of: int iio_read_channel_processed(struct iio_channel *chan, int *val) to: int iio_read_channel_processed(struct iio_channel *chan, int *val, unsigned int scale) And just augment all calls to pass 1 except the ntc driver which then passes 1000 in the last argument? If Jonathan agrees I can fix a patch to alter all the ~50 call sites like this and include the change to this NTC driver. Yours, Linus Walleij