← Documents Documentation/devicetree/bindings/mux/adi,adg792a.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Analog Devices ADG792A and ADG792G

Triple 4:1 mux의 독립·parallel mode, GPIO와 idle state입니다.

Source pathDocumentation/devicetree/bindings/mux/adi,adg792a.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

adi,adg792a.txt:1-75

독립 ADC mux와 differential parallel mux 예제를 비교합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

ADG792A/G triple 4:1 mux

1-2

이 문서는 Analog Devices ADG792A/G triple 4:1 multiplexer 바인딩입니다.

독립·parallel mux controller

3-9

필수 `compatible`은 `adi,adg792a` 또는 `adi,adg792g`입니다. 세 mux를 하나로 묶어 controller 하나가 모두 제어하는 parallel mode에서는 `#mux-control-cells = <0>`, mux마다 controller를 하나씩 두는 독립 mode에서는 `<1>`입니다.

그 밖의 standard mux-controller 속성은 `mux-controller.yaml`을 따릅니다.

ADG792A/G controller mode
#mux-control-cellsMode
0세 mux를 결합한 parallel controller 하나
1각 mux를 선택하는 독립 controller

Cell 수가 세 mux의 결합 방식을 결정합니다.

ADG792G GPIO와 idle state

10-23

ADG792G에서 선택 `gpio-controller`를 쓰면 `#gpio-cells = <2>`가 필수입니다. 첫 cell은 0 또는 1인 GPO line 번호, 두 번째 cell은 active-high 0 또는 active-low 1을 지정합니다.

선택 `idle-state`는 idle 시 각 mux controller의 state 배열입니다. 기본 special state는 `MUX_IDLE_AS_IS`이고 `MUX_IDLE_DISCONNECT`도 지원합니다.

State 0~3은 datasheet의 signal A~D에 대응합니다.

ADG792G GPIO specifier
Cell의미
0GPO line 0 또는 1
10 active-high, 1 active-low

두 cell이 GPO line과 polarity를 표현합니다.

독립 mux와 differential parallel mux

24-75

첫 예제는 세 독립 controller 중 mux 2를 ADC mux가 사용합니다. Mux 0은 idle에서 disconnect, mux 1은 이전 state 유지, mux 2는 signal B인 state 1로 이동합니다.

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

두 번째 예제는 세 mux를 하나의 parallel controller로 묶고 idle state 1을 사용합니다. Differential ADC처럼 두 signal을 동시에 mux해야 할 때 유용합니다.

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