xref: /freebsd/sys/contrib/device-tree/Bindings/mux/adi,adg792a.txt (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1c66ec88fSEmmanuel VadotBindings for Analog Devices ADG792A/G Triple 4:1 Multiplexers
2c66ec88fSEmmanuel Vadot
3c66ec88fSEmmanuel VadotRequired properties:
4c66ec88fSEmmanuel Vadot- compatible : "adi,adg792a" or "adi,adg792g"
5c66ec88fSEmmanuel Vadot- #mux-control-cells : <0> if parallel (the three muxes are bound together
6c66ec88fSEmmanuel Vadot  with a single mux controller controlling all three muxes), or <1> if
7c66ec88fSEmmanuel Vadot  not (one mux controller for each mux).
8*5956d97fSEmmanuel Vadot* Standard mux-controller bindings as described in mux-controller.yaml
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel VadotOptional properties for ADG792G:
11c66ec88fSEmmanuel Vadot- gpio-controller : if present, #gpio-cells below is required.
12c66ec88fSEmmanuel Vadot- #gpio-cells : should be <2>
13c66ec88fSEmmanuel Vadot			  - First cell is the GPO line number, i.e. 0 or 1
14c66ec88fSEmmanuel Vadot			  - Second cell is used to specify active high (0)
15c66ec88fSEmmanuel Vadot			    or active low (1)
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel VadotOptional properties:
18c66ec88fSEmmanuel Vadot- idle-state : if present, array of states that the mux controllers will have
19c66ec88fSEmmanuel Vadot  when idle. The special state MUX_IDLE_AS_IS is the default and
20c66ec88fSEmmanuel Vadot  MUX_IDLE_DISCONNECT is also supported.
21c66ec88fSEmmanuel Vadot
22c66ec88fSEmmanuel VadotStates 0 through 3 correspond to signals A through D in the datasheet.
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel VadotExample:
25c66ec88fSEmmanuel Vadot
26c66ec88fSEmmanuel Vadot	/*
27c66ec88fSEmmanuel Vadot	 * Three independent mux controllers (of which one is used).
28c66ec88fSEmmanuel Vadot	 * Mux 0 is disconnected when idle, mux 1 idles in the previously
29c66ec88fSEmmanuel Vadot	 * selected state and mux 2 idles with signal B.
30c66ec88fSEmmanuel Vadot	 */
31c66ec88fSEmmanuel Vadot	&i2c0 {
32c66ec88fSEmmanuel Vadot		mux: mux-controller@50 {
33c66ec88fSEmmanuel Vadot			compatible = "adi,adg792a";
34c66ec88fSEmmanuel Vadot			reg = <0x50>;
35c66ec88fSEmmanuel Vadot			#mux-control-cells = <1>;
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot			idle-state = <MUX_IDLE_DISCONNECT MUX_IDLE_AS_IS 1>;
38c66ec88fSEmmanuel Vadot		};
39c66ec88fSEmmanuel Vadot	};
40c66ec88fSEmmanuel Vadot
41c66ec88fSEmmanuel Vadot	adc-mux {
42c66ec88fSEmmanuel Vadot		compatible = "io-channel-mux";
43c66ec88fSEmmanuel Vadot		io-channels = <&adc 0>;
44c66ec88fSEmmanuel Vadot		io-channel-names = "parent";
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot		mux-controls = <&mux 2>;
47c66ec88fSEmmanuel Vadot
48c66ec88fSEmmanuel Vadot		channels = "sync-1", "", "out";
49c66ec88fSEmmanuel Vadot	};
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel Vadot	/*
53c66ec88fSEmmanuel Vadot	 * Three parallel muxes with one mux controller, useful e.g. if
54c66ec88fSEmmanuel Vadot	 * the adc is differential, thus needing two signals to be muxed
55c66ec88fSEmmanuel Vadot	 * simultaneously for correct operation.
56c66ec88fSEmmanuel Vadot	 */
57c66ec88fSEmmanuel Vadot	&i2c0 {
58c66ec88fSEmmanuel Vadot		pmux: mux-controller@50 {
59c66ec88fSEmmanuel Vadot			compatible = "adi,adg792a";
60c66ec88fSEmmanuel Vadot			reg = <0x50>;
61c66ec88fSEmmanuel Vadot			#mux-control-cells = <0>;
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot			idle-state = <1>;
64c66ec88fSEmmanuel Vadot		};
65c66ec88fSEmmanuel Vadot	};
66c66ec88fSEmmanuel Vadot
67c66ec88fSEmmanuel Vadot	diff-adc-mux {
68c66ec88fSEmmanuel Vadot		compatible = "io-channel-mux";
69c66ec88fSEmmanuel Vadot		io-channels = <&adc 0>;
70c66ec88fSEmmanuel Vadot		io-channel-names = "parent";
71c66ec88fSEmmanuel Vadot
72c66ec88fSEmmanuel Vadot		mux-controls = <&pmux>;
73c66ec88fSEmmanuel Vadot
74c66ec88fSEmmanuel Vadot		channels = "sync-1", "", "out";
75c66ec88fSEmmanuel Vadot	};
76