← Documents Documentation/devicetree/bindings/i2c/i2c-mux-ltc4306.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

LTC4305/LTC4306 I2C Bus Switch

LTC4305/LTC4306의 mux channel, GPIO와 rise-time accelerator 바인딩입니다.

Source pathDocumentation/devicetree/bindings/i2c/i2c-mux-ltc4306.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

i2c-mux-ltc4306.txt:1-61

동일 address의 downstream device를 분리하는 I2C switch를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * Linear Technology / Analog Devices I2C bus switch
2
3 Required Properties:
4
5 - compatible: Must contain one of the following.
6 "lltc,ltc4305", "lltc,ltc4306"
7 - reg: The I2C address of the device.
8
9 The following required properties are defined externally:
10
11 - Standard I2C mux properties. See i2c-mux.yaml in this directory.
12 - I2C child bus nodes. See i2c-mux.yaml in this directory.
13
14 Optional Properties:
15
16 - enable-gpios: Reference to the GPIO connected to the enable input.
17 - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all
18 children in idle state. This is necessary for example, if there are several
19 multiplexers on the bus and the devices behind them use same I2C addresses.
20 - gpio-controller: Marks the device node as a GPIO Controller.
21 - #gpio-cells: Should be two. The first cell is the pin number and
22 the second cell is used to specify flags.
23 See ../gpio/gpio.txt for more information.
24 - ltc,downstream-accelerators-enable: Enables the rise time accelerators
25 on the downstream port.
26 - ltc,upstream-accelerators-enable: Enables the rise time accelerators
27 on the upstream port.
28
29 Example:
30
31 ltc4306: i2c-mux@4a {
32 compatible = "lltc,ltc4306";
33 #address-cells = <1>;
34 #size-cells = <0>;
35 reg = <0x4a>;
36
37 gpio-controller;
38 #gpio-cells = <2>;
39
40 i2c@0 {
41 #address-cells = <1>;
42 #size-cells = <0>;
43 reg = <0>;
44
45 eeprom@50 {
46 compatible = "atmel,24c02";
47 reg = <0x50>;
48 };
49 };
50
51 i2c@1 {
52 #address-cells = <1>;
53 #size-cells = <0>;
54 reg = <1>;
55
56 eeprom@50 {
57 compatible = "atmel,24c02";
58 reg = <0x50>;
59 };
60 };
61 };
62

3. 한국어 전문 번역

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

LTC4305/LTC4306 bus switch 속성

1-28

Linear Technology/Analog Devices I2C bus switch의 필수 `compatible`은 `lltc,ltc4305` 또는 `lltc,ltc4306`이며, `reg`는 device의 I2C address입니다. 표준 I2C mux property와 I2C child bus node는 이 directory의 `i2c-mux.yaml`에서 외부 정의합니다.

선택 `enable-gpios`는 enable input에 연결한 GPIO를 참조합니다. Boolean `i2c-mux-idle-disconnect`는 idle 상태에서 모든 child를 분리합니다. 같은 bus에 multiplexer가 여러 개 있고 그 뒤의 device들이 같은 I2C address를 사용할 때 필요합니다. `gpio-controller`는 node를 GPIO controller로 표시하고, `#gpio-cells`는 2여야 합니다. 첫 cell은 pin number, 둘째 cell은 flag이며 자세한 내용은 `../gpio/gpio.txt`에 있습니다.

`ltc,downstream-accelerators-enable`은 downstream port의 rise-time accelerator를, `ltc,upstream-accelerators-enable`은 upstream port의 rise-time accelerator를 활성화합니다.

LTC4306 I2C switch topology
Upstream I2CLTC4305/LTC4306 at 0x4a
Idle policyKeep selected or disconnect all
Channel 0Child bus 0
Channel 1Child bus 1
GPIO controllerTwo-cell GPIO specifier

한 upstream I2C address에서 두 downstream child bus와 GPIO 기능을 제공하는 구조입니다.

두 downstream EEPROM 예제

29-61

예제의 `ltc4306`은 address `0x4a`에서 GPIO controller로 동작합니다. Channel 0과 1은 각각 `reg = <0>`과 `<1>`을 사용하며, 두 child bus 모두 동일한 address `0x50`의 Atmel 24C02 EEPROM을 둡니다.

ltc4306: i2c-mux@4a {
        compatible = "lltc,ltc4306";
        #address-cells = <1>;
        #size-cells = <0>;
        reg = <0x4a>;

        gpio-controller;
        #gpio-cells = <2>;

        i2c@0 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0>;

                eeprom@50 {
                        compatible = "atmel,24c02";
                        reg = <0x50>;
                };
        };

        i2c@1 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <1>;

                eeprom@50 {
                        compatible = "atmel,24c02";
                        reg = <0x50>;
                };
        };
};