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>
iio: Add a logarithmic fractional value type

For ADCs or DACs the denominator for fractional types often is a power of two.
In this case we can use a shift operation instead of the rather expensive 64 bit
division. This patch adds a new fractional type which expects the denominator to
be specified as the log2 of the actual denominator. E.g. for ADCs and DACs this
will usually be the number of significant bits.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

Conflicts:
	drivers/iio/inkern.c
zynq-zc706-adv7511-xcomm.dts: Fix DMA IRQ numbers

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
iio: axi_adc: Request probe deferral if the dma channel can be found

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
memory: zynq-smc: Add a terminating entry to the OF match table

Add a terminating entry to the OF match table of the zynq smc driver. Without
this the driver may bind to random devices who's compatibility string comes next
in memory.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>