^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) This binding is derived from clock bindings, and based on suggestions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) from Lars-Peter Clausen [1].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Sources of IIO channels can be represented by any node in the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) tree. Those nodes are designated as IIO providers. IIO consumer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) nodes use a phandle and IIO specifier pair to connect IIO provider
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) outputs to IIO inputs. Similar to the gpio specifiers, an IIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) specifier is an array of one or more cells identifying the IIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) output on a device. The length of an IIO specifier is defined by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) value of a #io-channel-cells property in the IIO provider node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) [1] https://marc.info/?l=linux-iio&m=135902119507483&w=2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) ==IIO providers==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #io-channel-cells: Number of cells in an IIO specifier; Typically 0 for nodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) with a single IIO output and 1 for nodes with multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) IIO outputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) label: A symbolic name for the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) Example for a simple configuration with no trigger:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) adc: voltage-sensor@35 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) compatible = "maxim,max1139";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) reg = <0x35>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #io-channel-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) label = "voltage_feedback_group1";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) Example for a configuration with trigger:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) adc@35 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) compatible = "some-vendor,some-adc";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) reg = <0x35>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) adc1: iio-device@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #io-channel-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* other properties */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) adc2: iio-device@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #io-channel-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* other properties */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) ==IIO consumers==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) io-channels: List of phandle and IIO specifier pairs, one pair
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) for each IIO input to the device. Note: if the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) IIO provider specifies '0' for #io-channel-cells,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) then only the phandle portion of the pair will appear.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) io-channel-names:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) List of IIO input name strings sorted in the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) order as the io-channels property. Consumers drivers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) will use io-channel-names to match IIO input names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) with IIO specifiers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) io-channel-ranges:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Empty property indicating that child nodes can inherit named
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) IIO channels from this node. Useful for bus nodes to provide
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) and IIO channel to their children.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) device {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) io-channels = <&adc 1>, <&ref 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) io-channel-names = "vcc", "vdd";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) This represents a device with two IIO inputs, named "vcc" and "vdd".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) The vcc channel is connected to output 1 of the &adc device, and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) vdd channel is connected to output 0 of the &ref device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) ==Example==
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) adc: max1139@35 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) compatible = "maxim,max1139";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) reg = <0x35>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #io-channel-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) iio-hwmon {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) compatible = "iio-hwmon";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) io-channels = <&adc 0>, <&adc 1>, <&adc 2>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) <&adc 3>, <&adc 4>, <&adc 5>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) <&adc 6>, <&adc 7>, <&adc 8>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) <&adc 9>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) some_consumer {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) compatible = "some-consumer";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) io-channels = <&adc 10>, <&adc 11>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) io-channel-names = "adc1", "adc2";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) };