← Documents Documentation/devicetree/bindings/usb/ti,tps6598x.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

TI TPS6598x Type-C and Power Delivery Controller

TPS6598x·TPS25750·Apple CD321x의 주소, patch firmware와 connector 조건을 설명합니다.

Source pathDocumentation/devicetree/bindings/usb/ti,tps6598x.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ti,tps6598x.yaml:1-159

TPS6598x·TPS25750·Apple CD321x의 주소, patch firmware와 connector 조건을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, PHY, firmware, graph endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/usb/ti,tps6598x.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
8
9 maintainers:
10 - Bryan O'Donoghue <bryan.odonoghue@linaro.org>
11
12 description: |
13 Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
14
15 A variant of this controller known as Apple CD321x or Apple ACE is also
16 present on hardware with Apple SoCs such as the M1.
17
18 properties:
19 compatible:
20 enum:
21 - ti,tps6598x
22 - apple,cd321x
23 - ti,tps25750
24
25 reg:
26 minItems: 1
27 items:
28 - description: main PD controller address
29 - description: |
30 I2C slave address field in PBMs input data
31 which is used as the device address when writing the
32 patch for TPS25750.
33 The patch address can be any value except 0x00, 0x20,
34 0x21, 0x22, and 0x23
35
36 reg-names:
37 items:
38 - const: main
39 - const: patch-address
40
41 reset-gpios:
42 description: GPIO used for the HRESET pin.
43 maxItems: 1
44
45 wakeup-source: true
46
47 interrupts:
48 maxItems: 1
49
50 interrupt-names:
51 items:
52 - const: irq
53
54 connector:
55 $ref: /schemas/connector/usb-connector.yaml#
56
57 firmware-name:
58 description: |
59 Should contain the name of the default patch binary
60 file located on the firmware search path which is
61 used to switch the controller into APP mode.
62 This is used when tps25750 doesn't have an EEPROM
63 connected to it.
64 maxItems: 1
65
66 required:
67 - compatible
68 - reg
69
70 allOf:
71 - if:
72 properties:
73 compatible:
74 contains:
75 const: ti,tps25750
76 then:
77 properties:
78 reg:
79 maxItems: 2
80
81 connector:
82 required:
83 - data-role
84
85 required:
86 - connector
87 - reg-names
88 else:
89 properties:
90 reg:
91 maxItems: 1
92
93 additionalProperties: false
94
95 examples:
96 - |
97 #include <dt-bindings/gpio/gpio.h>
98 #include <dt-bindings/interrupt-controller/irq.h>
99 i2c {
100 #address-cells = <1>;
101 #size-cells = <0>;
102
103 tps6598x: tps6598x@38 {
104 compatible = "ti,tps6598x";
105 reg = <0x38>;
106 wakeup-source;
107
108 interrupt-parent = <&msmgpio>;
109 interrupts = <107 IRQ_TYPE_LEVEL_LOW>;
110 interrupt-names = "irq";
111
112 pinctrl-names = "default";
113 pinctrl-0 = <&typec_pins>;
114 reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
115
116 typec_con: connector {
117 compatible = "usb-c-connector";
118 label = "USB-C";
119 port {
120 typec_ep: endpoint {
121 remote-endpoint = <&otg_ep>;
122 };
123 };
124 };
125 };
126 };
127
128 - |
129 #include <dt-bindings/interrupt-controller/irq.h>
130 i2c {
131 #address-cells = <1>;
132 #size-cells = <0>;
133
134 typec@21 {
135 compatible = "ti,tps25750";
136 reg = <0x21>, <0x0f>;
137 reg-names = "main", "patch-address";
138
139 interrupt-parent = <&msmgpio>;
140 interrupts = <100 IRQ_TYPE_LEVEL_LOW>;
141 interrupt-names = "irq";
142 firmware-name = "tps25750.bin";
143
144 pinctrl-names = "default";
145 pinctrl-0 = <&typec_pins>;
146
147 typec_con0: connector {
148 compatible = "usb-c-connector";
149 label = "USB-C";
150 data-role = "dual";
151 port {
152 typec_ep0: endpoint {
153 remote-endpoint = <&otg_ep>;
154 };
155 };
156 };
157 };
158 };
159 ...
160

3. 한국어 전문 번역

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

TI 6598x Type-C port switch와 PD controller

1-17

GPL-2.0-only 또는 BSD-2-Clause로 배포되는 이 스키마는 Texas Instruments 6598x Type-C Port Switch와 Power Delivery controller를 정의합니다. 관리자는 Bryan O'Donoghue입니다.

Apple M1 같은 Apple SoC 기반 hardware에는 Apple CD321x 또는 Apple ACE라는 변형 controller도 사용됩니다.

compatible과 main·patch I2C 주소

18-40

compatible은 `ti,tps6598x`, `apple,cd321x`, `ti,tps25750` 가운데 하나입니다. 첫 register는 main PD controller address입니다.

TPS25750의 두 번째 register는 patch를 쓸 때 device address로 사용하는 PBMs input data의 I2C slave address field입니다. patch address는 0x00, 0x20, 0x21, 0x22, 0x23을 제외한 값이어야 하며 이름은 `main`, `patch-address` 순서입니다.

properties:
  compatible:
    enum:
      - ti,tps6598x
      - apple,cd321x
      - ti,tps25750

  reg:
    minItems: 1
    items:
      - description: main PD controller address
      - description: |
          I2C slave address field in PBMs input data
          which is used as the device address when writing the
          patch for TPS25750.
          The patch address can be any value except 0x00, 0x20,
          0x21, 0x22, and 0x23

  reg-names:
    items:
      - const: main
      - const: patch-address

reset, interrupt, connector와 firmware

41-65

`reset-gpios`는 HRESET pin을 구동하는 GPIO 하나입니다. wakeup source가 될 수 있고 interrupt 하나의 이름은 `irq`입니다. `connector` child는 공통 USB connector schema를 따릅니다.

`firmware-name`은 controller를 APP mode로 전환할 기본 patch binary의 firmware search path 이름입니다. EEPROM이 연결되지 않은 TPS25750에서 사용합니다.

reset-gpios:
  description: GPIO used for the HRESET pin.
  maxItems: 1

wakeup-source: true

interrupts:
  maxItems: 1

interrupt-names:
  items:
    - const: irq

connector:
  $ref: /schemas/connector/usb-connector.yaml#

firmware-name:
  description: |
    Should contain the name of the default patch binary
    file located on the firmware search path which is
    used to switch the controller into APP mode.
    This is used when tps25750 doesn't have an EEPROM
    connected to it.
  maxItems: 1

TPS25750 조건부 요구사항

66-94

모든 controller에서 compatible과 register는 필수입니다. compatible에 `ti,tps25750`이 포함되면 register를 최대 두 개 허용하고 connector의 `data-role`, controller의 `connector`와 `reg-names`가 필수입니다. 다른 compatible에서는 register를 하나만 허용합니다. 추가 속성은 허용하지 않습니다.

required:
  - compatible
  - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: ti,tps25750
    then:
      properties:
        reg:
          maxItems: 2

        connector:
          required:
            - data-role

      required:
        - connector
        - reg-names
    else:
      properties:
        reg:
          maxItems: 1

additionalProperties: false

TPS6598x wakeup과 connector graph

95-127

첫 예제 `tps6598x@38`은 I2C 주소 0x38, wakeup source, low-level GPIO 107 interrupt, HRESET GPIO와 pinctrl을 사용합니다.

`usb-c-connector` endpoint `typec_ep`는 USB controller 쪽 `otg_ep`에 연결됩니다.

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        tps6598x: tps6598x@38 {
            compatible = "ti,tps6598x";
            reg = <0x38>;
            wakeup-source;

            interrupt-parent = <&msmgpio>;
            interrupts = <107 IRQ_TYPE_LEVEL_LOW>;
            interrupt-names = "irq";

            pinctrl-names = "default";
            pinctrl-0 = <&typec_pins>;
            reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;

            typec_con: connector {
                compatible = "usb-c-connector";
                label = "USB-C";
                port {
                    typec_ep: endpoint {
                        remote-endpoint = <&otg_ep>;
                    };
                };
            };
        };
    };

TPS25750 patch mode 예제

128-159

둘째 예제 `typec@21`은 main address 0x21과 patch address 0x0f를 `main`, `patch-address`로 구분합니다. low-level GPIO 100 interrupt와 `tps25750.bin` firmware patch를 사용합니다.

USB-C connector는 `data-role = "dual"`이며 `typec_ep0` endpoint를 `otg_ep`에 연결합니다.

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        typec@21 {
            compatible = "ti,tps25750";
            reg = <0x21>, <0x0f>;
            reg-names = "main", "patch-address";

            interrupt-parent = <&msmgpio>;
            interrupts = <100 IRQ_TYPE_LEVEL_LOW>;
            interrupt-names = "irq";
            firmware-name = "tps25750.bin";

            pinctrl-names = "default";
            pinctrl-0 = <&typec_pins>;

            typec_con0: connector {
                compatible = "usb-c-connector";
                label = "USB-C";
                data-role = "dual";
                port {
                    typec_ep0: endpoint {
                        remote-endpoint = <&otg_ep>;
                    };
                };
            };
        };
    };
...