| 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"; |
| }; |