mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
17d82b47a2
Provide bindings and parse OF data during initialization. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
98 lines
2.6 KiB
Plaintext
98 lines
2.6 KiB
Plaintext
This binding is derived from clock bindings, and based on suggestions
|
|
from Lars-Peter Clausen [1].
|
|
|
|
Sources of IIO channels can be represented by any node in the device
|
|
tree. Those nodes are designated as IIO providers. IIO consumer
|
|
nodes use a phandle and IIO specifier pair to connect IIO provider
|
|
outputs to IIO inputs. Similar to the gpio specifiers, an IIO
|
|
specifier is an array of one or more cells identifying the IIO
|
|
output on a device. The length of an IIO specifier is defined by the
|
|
value of a #io-channel-cells property in the IIO provider node.
|
|
|
|
[1] http://marc.info/?l=linux-iio&m=135902119507483&w=2
|
|
|
|
==IIO providers==
|
|
|
|
Required properties:
|
|
#io-channel-cells: Number of cells in an IIO specifier; Typically 0 for nodes
|
|
with a single IIO output and 1 for nodes with multiple
|
|
IIO outputs.
|
|
|
|
Example for a simple configuration with no trigger:
|
|
|
|
adc: voltage-sensor@35 {
|
|
compatible = "maxim,max1139";
|
|
reg = <0x35>;
|
|
#io-channel-cells = <1>;
|
|
};
|
|
|
|
Example for a configuration with trigger:
|
|
|
|
adc@35 {
|
|
compatible = "some-vendor,some-adc";
|
|
reg = <0x35>;
|
|
|
|
adc1: iio-device@0 {
|
|
#io-channel-cells = <1>;
|
|
/* other properties */
|
|
};
|
|
adc2: iio-device@1 {
|
|
#io-channel-cells = <1>;
|
|
/* other properties */
|
|
};
|
|
};
|
|
|
|
==IIO consumers==
|
|
|
|
Required properties:
|
|
io-channels: List of phandle and IIO specifier pairs, one pair
|
|
for each IIO input to the device. Note: if the
|
|
IIO provider specifies '0' for #io-channel-cells,
|
|
then only the phandle portion of the pair will appear.
|
|
|
|
Optional properties:
|
|
io-channel-names:
|
|
List of IIO input name strings sorted in the same
|
|
order as the io-channels property. Consumers drivers
|
|
will use io-channel-names to match IIO input names
|
|
with IIO specifiers.
|
|
io-channel-ranges:
|
|
Empty property indicating that child nodes can inherit named
|
|
IIO channels from this node. Useful for bus nodes to provide
|
|
and IIO channel to their children.
|
|
|
|
For example:
|
|
|
|
device {
|
|
io-channels = <&adc 1>, <&ref 0>;
|
|
io-channel-names = "vcc", "vdd";
|
|
};
|
|
|
|
This represents a device with two IIO inputs, named "vcc" and "vdd".
|
|
The vcc channel is connected to output 1 of the &adc device, and the
|
|
vdd channel is connected to output 0 of the &ref device.
|
|
|
|
==Example==
|
|
|
|
adc: max1139@35 {
|
|
compatible = "maxim,max1139";
|
|
reg = <0x35>;
|
|
#io-channel-cells = <1>;
|
|
};
|
|
|
|
...
|
|
|
|
iio_hwmon {
|
|
compatible = "iio-hwmon";
|
|
io-channels = <&adc 0>, <&adc 1>, <&adc 2>,
|
|
<&adc 3>, <&adc 4>, <&adc 5>,
|
|
<&adc 6>, <&adc 7>, <&adc 8>,
|
|
<&adc 9>;
|
|
};
|
|
|
|
some_consumer {
|
|
compatible = "some-consumer";
|
|
io-channels = <&adc 10>, <&adc 11>;
|
|
io-channel-names = "adc1", "adc2";
|
|
};
|