162306a36Sopenharmony_ciBindings for Analog Devices ADG792A/G Triple 4:1 Multiplexers
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciRequired properties:
462306a36Sopenharmony_ci- compatible : "adi,adg792a" or "adi,adg792g"
562306a36Sopenharmony_ci- #mux-control-cells : <0> if parallel (the three muxes are bound together
662306a36Sopenharmony_ci  with a single mux controller controlling all three muxes), or <1> if
762306a36Sopenharmony_ci  not (one mux controller for each mux).
862306a36Sopenharmony_ci* Standard mux-controller bindings as described in mux-controller.yaml
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciOptional properties for ADG792G:
1162306a36Sopenharmony_ci- gpio-controller : if present, #gpio-cells below is required.
1262306a36Sopenharmony_ci- #gpio-cells : should be <2>
1362306a36Sopenharmony_ci			  - First cell is the GPO line number, i.e. 0 or 1
1462306a36Sopenharmony_ci			  - Second cell is used to specify active high (0)
1562306a36Sopenharmony_ci			    or active low (1)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciOptional properties:
1862306a36Sopenharmony_ci- idle-state : if present, array of states that the mux controllers will have
1962306a36Sopenharmony_ci  when idle. The special state MUX_IDLE_AS_IS is the default and
2062306a36Sopenharmony_ci  MUX_IDLE_DISCONNECT is also supported.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciStates 0 through 3 correspond to signals A through D in the datasheet.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciExample:
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	/*
2762306a36Sopenharmony_ci	 * Three independent mux controllers (of which one is used).
2862306a36Sopenharmony_ci	 * Mux 0 is disconnected when idle, mux 1 idles in the previously
2962306a36Sopenharmony_ci	 * selected state and mux 2 idles with signal B.
3062306a36Sopenharmony_ci	 */
3162306a36Sopenharmony_ci	&i2c0 {
3262306a36Sopenharmony_ci		mux: mux-controller@50 {
3362306a36Sopenharmony_ci			compatible = "adi,adg792a";
3462306a36Sopenharmony_ci			reg = <0x50>;
3562306a36Sopenharmony_ci			#mux-control-cells = <1>;
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci			idle-state = <MUX_IDLE_DISCONNECT MUX_IDLE_AS_IS 1>;
3862306a36Sopenharmony_ci		};
3962306a36Sopenharmony_ci	};
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	adc-mux {
4262306a36Sopenharmony_ci		compatible = "io-channel-mux";
4362306a36Sopenharmony_ci		io-channels = <&adc 0>;
4462306a36Sopenharmony_ci		io-channel-names = "parent";
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci		mux-controls = <&mux 2>;
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci		channels = "sync-1", "", "out";
4962306a36Sopenharmony_ci	};
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	/*
5362306a36Sopenharmony_ci	 * Three parallel muxes with one mux controller, useful e.g. if
5462306a36Sopenharmony_ci	 * the adc is differential, thus needing two signals to be muxed
5562306a36Sopenharmony_ci	 * simultaneously for correct operation.
5662306a36Sopenharmony_ci	 */
5762306a36Sopenharmony_ci	&i2c0 {
5862306a36Sopenharmony_ci		pmux: mux-controller@50 {
5962306a36Sopenharmony_ci			compatible = "adi,adg792a";
6062306a36Sopenharmony_ci			reg = <0x50>;
6162306a36Sopenharmony_ci			#mux-control-cells = <0>;
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci			idle-state = <1>;
6462306a36Sopenharmony_ci		};
6562306a36Sopenharmony_ci	};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	diff-adc-mux {
6862306a36Sopenharmony_ci		compatible = "io-channel-mux";
6962306a36Sopenharmony_ci		io-channels = <&adc 0>;
7062306a36Sopenharmony_ci		io-channel-names = "parent";
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci		mux-controls = <&pmux>;
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		channels = "sync-1", "", "out";
7562306a36Sopenharmony_ci	};
76