iio: Introduce a new fractional value type
authorLars-Peter Clausen <lars@metafoo.de>
Fri, 14 Sep 2012 15:21:00 +0000 (16:21 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 15 Sep 2012 09:12:22 +0000 (10:12 +0100)
commit7985e7c1003bc5cdfa20755f8cfdada946ed8e18
tree94adb3cf91ec3406361c2bc9d0c66485e1bf2436
parentca7d1b32d2a0d4c62533b9401cf9ce4d14d183f7
iio: Introduce a new fractional value type

Currently IIO uses a decimal fixed point representations for real type numbers.
This patch introduces a new representation for rational type numbers. The number
will be expressed by specifying a numerator and denominator. For converting a
raw value to a processed value multiply it by the numerator and divide it by the
denominator.

The reasoning for introducing this new type is that for a lot of devices the
scale can be represented easily by a fractional number, but it is not possible
to represent it as fixed point number without rounding.  E.g. for a simple DAC
the scale is often the reference voltage divided by the number of possible
values (Usually 2**n_bits - 1). Each driver currently implements the conversion
of this fraction to a fixed point number on its own.

Also when it comes to the in-kernel interface this allows to directly use the
fractional factors to convert a raw value to a processed value. This should on
one hand require less instructions and on the other hand increase the
precision.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/industrialio-core.c
include/linux/iio/types.h