Analog Devices ADG792A/G is a triple 4:1 mux.

Acked-by: Jonathan Cameron <ji...@kernel.org>
Signed-off-by: Peter Rosin <p...@axentia.se>
---
 .../devicetree/bindings/mux/adi,adg792a.txt        | 75 ++++++++++++++++++++++
 1 file changed, 75 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mux/adi,adg792a.txt

diff --git a/Documentation/devicetree/bindings/mux/adi,adg792a.txt 
b/Documentation/devicetree/bindings/mux/adi,adg792a.txt
new file mode 100644
index 000000000000..96b787a69f50
--- /dev/null
+++ b/Documentation/devicetree/bindings/mux/adi,adg792a.txt
@@ -0,0 +1,75 @@
+Bindings for Analog Devices ADG792A/G Triple 4:1 Multiplexers
+
+Required properties:
+- compatible : "adi,adg792a" or "adi,adg792g"
+- #mux-control-cells : <0> if parallel (the three muxes are bound together
+  with a single mux controller controlling all three muxes), or <1> if
+  not (one mux controller for each mux).
+* Standard mux-controller bindings as described in mux-controller.txt
+
+Optional properties for ADG792G:
+- gpio-controller : if present, #gpio-cells below is required.
+- #gpio-cells : should be <2>
+                         - First cell is the GPO line number, i.e. 0 or 1
+                         - Second cell is used to specify active high (0)
+                           or active low (1)
+
+Optional properties:
+- idle-state : if present, array of states that the mux controllers will have
+  when idle. The special state MUX_IDLE_AS_IS is the default and
+  MUX_IDLE_DISCONNECT is also supported.
+
+States 0 through 3 correspond to signals A through D in the datasheet.
+
+Example:
+
+       /*
+        * Three independent mux controllers (of which one is used).
+        * Mux 0 is disconnected when idle, mux 1 idles in the previously
+        * selected state and mux 2 idles with signal B.
+        */
+       &i2c0 {
+               mux: mux-controller@50 {
+                       compatible = "adi,adg792a";
+                       reg = <0x50>;
+                       #mux-control-cells = <1>;
+
+                       idle-state = <MUX_IDLE_DISCONNECT MUX_IDLE_AS_IS 1>;
+               };
+       };
+
+       adc-mux {
+               compatible = "io-channel-mux";
+               io-channels = <&adc 0>;
+               io-channel-names = "parent";
+
+               mux-controls = <&mux 2>;
+
+               channels = "sync-1", "", "out";
+       };
+
+
+       /*
+        * Three parallel muxes with one mux controller, useful e.g. if
+        * the adc is differential, thus needing two signals to be muxed
+        * simultaneously for correct operation.
+        */
+       &i2c0 {
+               pmux: mux-controller@50 {
+                       compatible = "adi,adg792a";
+                       reg = <0x50>;
+                       #mux-control-cells = <0>;
+
+                       idle-state = <1>;
+               };
+       };
+
+       diff-adc-mux {
+               compatible = "io-channel-mux";
+               io-channels = <&adc 0>;
+               io-channel-names = "parent";
+
+               mux-controls = <&pmux>;
+
+               channels = "sync-1", "", "out";
+       };
-- 
2.1.4

Reply via email to