← Documents Documentation/devicetree/bindings/usb/onnn,nb7vpq904m.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

ON Semiconductor NB7VPQ904M Redriver

NB7VPQ904M의 Type-C/DisplayPort lane mapping과 교환 layout을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

onnn,nb7vpq904m.yaml:1-139

NB7VPQ904M의 Type-C/DisplayPort lane mapping과 교환 layout을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, clock, PHY, power, 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/onnn,nb7vpq904m.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ON Semiconductor Type-C DisplayPort ALT Mode Linear Redriver
8
9 maintainers:
10 - Neil Armstrong <neil.armstrong@linaro.org>
11
12 properties:
13 compatible:
14 enum:
15 - onnn,nb7vpq904m
16
17 reg:
18 maxItems: 1
19
20 vcc-supply:
21 description: power supply (1.8V)
22
23 enable-gpios: true
24 orientation-switch: true
25 retimer-switch: true
26
27 ports:
28 $ref: /schemas/graph.yaml#/properties/ports
29 properties:
30 port@0:
31 $ref: /schemas/graph.yaml#/properties/port
32 description: Super Speed (SS) Output endpoint to the Type-C connector
33
34 port@1:
35 $ref: /schemas/graph.yaml#/$defs/port-base
36 description: Super Speed (SS) Input endpoint from the Super-Speed PHY
37 unevaluatedProperties: false
38
39 properties:
40 endpoint:
41 $ref: /schemas/graph.yaml#/$defs/endpoint-base
42 unevaluatedProperties: false
43
44 properties:
45 data-lanes:
46 $ref: /schemas/types.yaml#/definitions/uint32-array
47 description: |
48 An array of physical data lane indexes. Position determines how
49 lanes are connected to the redriver, It is assumed the same order
50 is kept on the other side of the redriver.
51 Lane number represents the following
52 - 0 is RX2 lane
53 - 1 is TX2 lane
54 - 2 is TX1 lane
55 - 3 is RX1 lane
56 The position determines the physical port of the redriver, in the
57 order A, B, C & D.
58 oneOf:
59 - items:
60 - const: 0
61 - const: 1
62 - const: 2
63 - const: 3
64 description: |
65 This is the lanes default layout
66 - Port A to RX2 lane
67 - Port B to TX2 lane
68 - Port C to TX1 lane
69 - Port D to RX1 lane
70 - items:
71 - const: 3
72 - const: 2
73 - const: 1
74 - const: 0
75 description: |
76 This is the USBRX2/USBTX2 and USBRX1/USBTX1 swapped lanes layout
77 - Port A to RX1 lane
78 - Port B to TX1 lane
79 - Port C to TX2 lane
80 - Port D to RX2 lane
81
82 port@2:
83 $ref: /schemas/graph.yaml#/properties/port
84 description:
85 Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
86 handling altmode muxing and orientation switching.
87
88 required:
89 - compatible
90 - reg
91
92 allOf:
93 - $ref: usb-switch.yaml#
94 - $ref: usb-switch-ports.yaml#
95
96 additionalProperties: false
97
98 examples:
99 - |
100 i2c {
101 #address-cells = <1>;
102 #size-cells = <0>;
103
104 typec-mux@32 {
105 compatible = "onnn,nb7vpq904m";
106 reg = <0x32>;
107
108 vcc-supply = <&vreg_l15b_1p8>;
109
110 retimer-switch;
111 orientation-switch;
112
113 ports {
114 #address-cells = <1>;
115 #size-cells = <0>;
116
117 port@0 {
118 reg = <0>;
119 usb_con_ss: endpoint {
120 remote-endpoint = <&typec_con_ss>;
121 };
122 };
123 port@1 {
124 reg = <1>;
125 phy_con_ss: endpoint {
126 remote-endpoint = <&usb_phy_ss>;
127 data-lanes = <3 2 1 0>;
128 };
129 };
130 port@2 {
131 reg = <2>;
132 usb_con_sbu: endpoint {
133 remote-endpoint = <&typec_dp_aux>;
134 };
135 };
136 };
137 };
138 };
139 ...
140

3. 한국어 전문 번역

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

ON Semiconductor Type-C redriver

1-11

GPL-2.0-only 또는 BSD-2-Clause로 배포되는 이 schema는 ON Semiconductor Type-C DisplayPort ALT Mode Linear Redriver NB7VPQ904M을 정의합니다. 관리자는 Neil Armstrong입니다.

1.8 V supply와 switch

12-26

`compatible`은 `onnn,nb7vpq904m`, `reg`는 I2C 주소 하나입니다. `vcc-supply`는 1.8 V 전원이며 enable GPIO, orientation switch, retimer switch를 지원합니다.

properties:
  compatible:
    enum:
      - onnn,nb7vpq904m

  reg:
    maxItems: 1

  vcc-supply:
    description: power supply (1.8V)

  enable-gpios: true
  orientation-switch: true
  retimer-switch: true

세 port와 physical data lane

27-57

`port@0`은 Type-C connector로 향하는 SuperSpeed output, `port@1`은 SuperSpeed PHY에서 들어오는 input, `port@2`는 altmode muxing과 orientation switching용 SBU AUX endpoint입니다.

`port@1` endpoint의 `data-lanes` 배열은 physical lane index를 정의합니다. 0은 RX2, 1은 TX2, 2는 TX1, 3은 RX1이며 배열 위치는 redriver physical port A, B, C, D 순서입니다. 반대편에서도 같은 순서를 유지한다고 가정합니다.

ports:
  $ref: /schemas/graph.yaml#/properties/ports
  properties:
    port@0:
      $ref: /schemas/graph.yaml#/properties/port
      description: Super Speed (SS) Output endpoint to the Type-C connector

    port@1:
      $ref: /schemas/graph.yaml#/$defs/port-base
      description: Super Speed (SS) Input endpoint from the Super-Speed PHY
      unevaluatedProperties: false

      properties:
        endpoint:
          $ref: /schemas/graph.yaml#/$defs/endpoint-base
          unevaluatedProperties: false

          properties:
            data-lanes:
              $ref: /schemas/types.yaml#/definitions/uint32-array
              description: |
                An array of physical data lane indexes. Position determines how
                lanes are connected to the redriver, It is assumed the same order
                is kept on the other side of the redriver.
                Lane number represents the following
                - 0 is RX2 lane
                - 1 is TX2 lane
                - 2 is TX1 lane
                - 3 is RX1 lane
                The position determines the physical port of the redriver, in the
                order A, B, C & D.

기본·교환 lane layout

58-97

기본 layout `0 1 2 3`은 A→RX2, B→TX2, C→TX1, D→RX1입니다. 교환 layout `3 2 1 0`은 USBRX2/USBTX2와 USBRX1/USBTX1 쌍을 바꾸어 A→RX1, B→TX1, C→TX2, D→RX2로 연결합니다.

필수 속성은 `compatible`과 `reg`입니다. `usb-switch.yaml`과 `usb-switch-ports.yaml`을 상속하며 정의되지 않은 추가 속성은 허용하지 않습니다.

                oneOf:
                  - items:
                      - const: 0
                      - const: 1
                      - const: 2
                      - const: 3
                    description: |
                      This is the lanes default layout
                      - Port A to RX2 lane
                      - Port B to TX2 lane
                      - Port C to TX1 lane
                      - Port D to RX1 lane
                  - items:
                      - const: 3
                      - const: 2
                      - const: 1
                      - const: 0
                    description: |
                      This is the USBRX2/USBTX2 and USBRX1/USBTX1 swapped lanes layout
                      - Port A to RX1 lane
                      - Port B to TX1 lane
                      - Port C to TX2 lane
                      - Port D to RX2 lane

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
          handling altmode muxing and orientation switching.

required:
  - compatible
  - reg

allOf:
  - $ref: usb-switch.yaml#
  - $ref: usb-switch-ports.yaml#

additionalProperties: false

교환 lane redriver 예제

98-139

예제 `typec-mux@32`는 I2C 주소 0x32와 `vreg_l15b_1p8` supply를 사용하고 retimer 및 orientation switch를 활성화합니다.

SuperSpeed output은 `typec_con_ss`, input은 `usb_phy_ss`, SBU는 `typec_dp_aux`에 연결됩니다. input endpoint의 `data-lanes = <3 2 1 0>`은 교환 layout을 선택합니다.

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        typec-mux@32 {
            compatible = "onnn,nb7vpq904m";
            reg = <0x32>;

            vcc-supply = <&vreg_l15b_1p8>;

            retimer-switch;
            orientation-switch;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;
                    usb_con_ss: endpoint {
                        remote-endpoint = <&typec_con_ss>;
                    };
                };
                port@1 {
                    reg = <1>;
                    phy_con_ss: endpoint {
                        remote-endpoint = <&usb_phy_ss>;
                        data-lanes = <3 2 1 0>;
                    };
                };
                port@2 {
                    reg = <2>;
                    usb_con_sbu: endpoint {
                        remote-endpoint = <&typec_dp_aux>;
                    };
                };
            };
        };
    };
...