Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / Documentation / devicetree / bindings / iio / iio-bindings.txt
diff --git a/kernel/Documentation/devicetree/bindings/iio/iio-bindings.txt b/kernel/Documentation/devicetree/bindings/iio/iio-bindings.txt
new file mode 100644 (file)
index 0000000..0b447d9
--- /dev/null
@@ -0,0 +1,97 @@
+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";
+       };