Kernel-4.18.0-80.el8_adi,adg792a

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";
};