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