> > + switch (mask) { > > + case IIO_CHAN_INFO_RAW: > > + *val = result; > > + return IIO_VAL_INT; > > + case IIO_CHAN_INFO_SCALE: > > + *val = adc_const[id] * ((result * 1000 + 500) / 1000); > > This looks wrong. The IIO_CHAN_INFO_SCALE attribute is the factor by > which > IIO_CHAN_INFO_RAW needs to be multiplied to get the value in the proper > unit, > which is specified in the IIO ABI spec. E.g. milli volts for voltages. > > What you return here seems to be the IIO_CHAN_INFO_PROCESSED attribute. > Which > basically is raw * scale. Thanks a lot for your review. Any way to get the result with offset value in the iio-consumer side? What I need is as below. result = raw * scale + offset At this moment, there are two apis() for reading the iio channel - iio_read_channel_raw() and iio_read_channel_scale(). Does it sound good if I add iio_read_channel_offset() consumer api using IIO_CHAN_INFO_OFFSET? Best Regards, Milo -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html