요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/ti,tps6598x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
maintainers:
- Bryan O'Donoghue <[email protected]>
description: |
Texas Instruments 6598x Type-C Port Switch and Power Delivery controller
A variant of this controller known as Apple CD321x or Apple ACE is also
present on hardware with Apple SoCs such as the M1.
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-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
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
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>;
};
};
};
};
};
- |
#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>;
};
};
};
};
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
TI 6598x Type-C port switch와 PD controller
1-17GPL-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-40compatible은 `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>;
};
};
};
};
};
...
요약과 해설
ti,tps6598x.yaml:1-159TPS6598x·TPS25750·Apple CD321x의 주소, patch firmware와 connector 조건을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, PHY, firmware, graph endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.