← Documents Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

NVIDIA Tegra XUSB Device Controller

Tegra XUDC의 register·clock·power·PHY와 SoC 세대별 resource 제약을 설명합니다.

Source pathDocumentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

nvidia,tegra-xudc.yaml:1-211

Tegra XUDC의 register·clock·power·PHY와 SoC 세대별 resource 제약을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, clock, PHY, supply, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/usb/nvidia,tegra-xudc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra XUSB device mode controller (XUDC)
8
9 description:
10 The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
11 USB 3.0 SuperSpeed protocols.
12
13 maintainers:
14 - Nagarjuna Kristam <nkristam@nvidia.com>
15 - JC Kuo <jckuo@nvidia.com>
16 - Thierry Reding <treding@nvidia.com>
17
18 properties:
19 compatible:
20 items:
21 - enum:
22 - nvidia,tegra210-xudc # For Tegra210
23 - nvidia,tegra186-xudc # For Tegra186
24 - nvidia,tegra194-xudc # For Tegra194
25 - nvidia,tegra234-xudc # For Tegra234
26
27 reg:
28 minItems: 2
29 items:
30 - description: XUSB device controller registers
31 - description: XUSB device PCI Config registers
32 - description: XUSB device registers.
33
34 reg-names:
35 minItems: 2
36 items:
37 - const: base
38 - const: fpci
39 - const: ipfs
40
41 interrupts:
42 maxItems: 1
43 description: Must contain the XUSB device interrupt.
44
45 clocks:
46 minItems: 4
47 items:
48 - description: Clock to enable core XUSB dev clock.
49 - description: Clock to enable XUSB super speed clock.
50 - description: Clock to enable XUSB super speed dev clock.
51 - description: Clock to enable XUSB high speed dev clock.
52 - description: Clock to enable XUSB full speed dev clock.
53
54 clock-names:
55 minItems: 4
56 items:
57 - const: dev
58 - const: ss
59 - const: ss_src
60 - const: fs_src
61 - const: hs_src
62
63 interconnects:
64 items:
65 - description: memory read client
66 - description: memory write client
67
68 interconnect-names:
69 items:
70 - const: dma-mem # read
71 - const: write
72
73 iommus:
74 maxItems: 1
75
76 power-domains:
77 items:
78 - description: XUSBB(device) power-domain
79 - description: XUSBA(superspeed) power-domain
80
81 power-domain-names:
82 items:
83 - const: dev
84 - const: ss
85
86 nvidia,xusb-padctl:
87 $ref: /schemas/types.yaml#/definitions/phandle
88 description:
89 phandle to the XUSB pad controller that is used to configure the USB pads
90 used by the XUDC controller.
91
92 phys:
93 minItems: 1
94 maxItems: 2
95 description:
96 Must contain an entry for each entry in phy-names.
97 See ../phy/phy-bindings.txt for details.
98
99 phy-names:
100 minItems: 1
101 items:
102 - const: usb2-0
103 - const: usb3-0
104
105 avddio-usb-supply:
106 description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
107
108 hvdd-usb-supply:
109 description: USB controller power supply. Must supply 3.3 V.
110
111 dma-coherent: true
112
113 required:
114 - compatible
115 - reg
116 - reg-names
117 - interrupts
118 - clocks
119 - clock-names
120 - power-domains
121 - power-domain-names
122 - nvidia,xusb-padctl
123 - phys
124 - phy-names
125
126 allOf:
127 - if:
128 properties:
129 compatible:
130 contains:
131 enum:
132 - nvidia,tegra210-xudc
133 then:
134 properties:
135 reg:
136 minItems: 3
137 reg-names:
138 minItems: 3
139 clocks:
140 minItems: 5
141 clock-names:
142 minItems: 5
143 required:
144 - avddio-usb-supply
145 - hvdd-usb-supply
146
147 - if:
148 properties:
149 compatible:
150 contains:
151 enum:
152 - nvidia,tegra186-xudc
153 - nvidia,tegra194-xudc
154 - nvidia,tegra234-xudc
155 then:
156 properties:
157 reg:
158 maxItems: 2
159 reg-names:
160 maxItems: 2
161 clocks:
162 maxItems: 4
163 clock-names:
164 maxItems: 4
165
166 - if:
167 properties:
168 compatible:
169 contains:
170 enum:
171 - nvidia,tegra194-xudc
172 - nvidia,tegra234-xudc
173 then:
174 required:
175 - dma-coherent
176
177 additionalProperties: false
178
179 examples:
180 - |
181 #include <dt-bindings/clock/tegra210-car.h>
182 #include <dt-bindings/gpio/tegra-gpio.h>
183 #include <dt-bindings/interrupt-controller/arm-gic.h>
184
185 usb@700d0000 {
186 compatible = "nvidia,tegra210-xudc";
187 reg = <0x700d0000 0x8000>,
188 <0x700d8000 0x1000>,
189 <0x700d9000 0x1000>;
190 reg-names = "base", "fpci", "ipfs";
191
192 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
193
194 clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
195 <&tegra_car TEGRA210_CLK_XUSB_SS>,
196 <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
197 <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
198 <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
199 clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";
200
201 power-domains = <&pd_xusbdev>, <&pd_xusbss>;
202 power-domain-names = "dev", "ss";
203
204 nvidia,xusb-padctl = <&padctl>;
205
206 phys = <&micro_b>;
207 phy-names = "usb2-0";
208
209 avddio-usb-supply = <&vdd_pex_1v05>;
210 hvdd-usb-supply = <&vdd_3v3_sys>;
211 };
212

3. 한국어 전문 번역

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

NVIDIA Tegra XUSB device controller

1-17

GPL-2.0 또는 BSD-2-Clause로 배포되는 이 schema는 NVIDIA Tegra XUSB device-mode controller(XUDC)를 정의합니다. XUDC는 USB 2.0 High-Speed·Full-Speed와 USB 3.0 SuperSpeed protocol을 지원합니다. 관리자는 Nagarjuna Kristam, JC Kuo, Thierry Reding입니다.

SoC compatible, register와 interrupt

18-44

지원 SoC는 Tegra210, Tegra186, Tegra194, Tegra234입니다. register는 device controller `base`, PCI configuration `fpci`, device register `ipfs` 순서이며 최소 두 개가 필요합니다.

interrupt는 XUSB device interrupt 하나입니다.

properties:
  compatible:
    items:
      - enum:
          - nvidia,tegra210-xudc # For Tegra210
          - nvidia,tegra186-xudc # For Tegra186
          - nvidia,tegra194-xudc # For Tegra194
          - nvidia,tegra234-xudc # For Tegra234

  reg:
    minItems: 2
    items:
      - description: XUSB device controller registers
      - description: XUSB device PCI Config registers
      - description: XUSB device registers.

  reg-names:
    minItems: 2
    items:
      - const: base
      - const: fpci
      - const: ipfs

  interrupts:
    maxItems: 1
    description: Must contain the XUSB device interrupt.

Clock, interconnect와 power domain

45-84

clock은 core XUSB device, XUSB SuperSpeed, SuperSpeed device source, High-Speed device source, Full-Speed device source용으로 schema에 나열되며 최소 네 개가 필요합니다. 이름 순서는 `dev`, `ss`, `ss_src`, `fs_src`, `hs_src`입니다.

interconnect는 memory read client와 write client 순서이고 이름은 `dma-mem`, `write`입니다. power domain은 XUSBB device와 XUSBA SuperSpeed 순서이며 이름은 `dev`, `ss`입니다.

clocks:
  minItems: 4
  items:
    - description: Clock to enable core XUSB dev clock.
    - description: Clock to enable XUSB super speed clock.
    - description: Clock to enable XUSB super speed dev clock.
    - description: Clock to enable XUSB high speed dev clock.
    - description: Clock to enable XUSB full speed dev clock.

clock-names:
  minItems: 4
  items:
    - const: dev
    - const: ss
    - const: ss_src
    - const: fs_src
    - const: hs_src

interconnects:
  items:
    - description: memory read client
    - description: memory write client

interconnect-names:
  items:
    - const: dma-mem # read
    - const: write

iommus:
  maxItems: 1

power-domains:
  items:
    - description: XUSBB(device) power-domain
    - description: XUSBA(superspeed) power-domain

power-domain-names:
  items:
    - const: dev
    - const: ss

Pad controller, PHY와 analog supply

85-112

`nvidia,xusb-padctl`은 XUDC가 사용하는 USB pad를 구성하는 XUSB pad controller phandle입니다. PHY는 1~2개이고 이름은 USB2용 `usb2-0`, USB3용 `usb3-0` 순서입니다.

`avddio-usb-supply`는 PCIe/USB3 analog logic에 1.05 V를, `hvdd-usb-supply`는 USB controller에 3.3 V를 공급합니다. coherent DMA도 지원합니다.


nvidia,xusb-padctl:
  $ref: /schemas/types.yaml#/definitions/phandle
  description:
    phandle to the XUSB pad controller that is used to configure the USB pads
    used by the XUDC controller.

phys:
  minItems: 1
  maxItems: 2
  description:
    Must contain an entry for each entry in phy-names.
    See ../phy/phy-bindings.txt for details.

phy-names:
  minItems: 1
  items:
    - const: usb2-0
    - const: usb3-0

avddio-usb-supply:
  description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.

hvdd-usb-supply:
  description: USB controller power supply. Must supply 3.3 V.

dma-coherent: true

공통 필수 속성

113-125

필수 속성은 `compatible`, `reg`, `reg-names`, `interrupts`, `clocks`, `clock-names`, `power-domains`, `power-domain-names`, `nvidia,xusb-padctl`, `phys`, `phy-names`입니다.

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - clocks
  - clock-names
  - power-domains
  - power-domain-names
  - nvidia,xusb-padctl
  - phys
  - phy-names

Tegra 세대별 resource 제약

126-178

Tegra210은 register와 register 이름이 최소 세 개, clock과 clock 이름이 최소 다섯 개여야 하며 1.05 V `avddio-usb-supply`와 3.3 V `hvdd-usb-supply`도 필수입니다.

Tegra186, Tegra194, Tegra234는 register를 최대 두 개, clock을 최대 네 개 사용합니다. Tegra194와 Tegra234는 `dma-coherent`가 필수입니다. 정의되지 않은 추가 속성은 허용하지 않습니다.

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra210-xudc
    then:
      properties:
        reg:
          minItems: 3
        reg-names:
          minItems: 3
        clocks:
          minItems: 5
        clock-names:
          minItems: 5
      required:
        - avddio-usb-supply
        - hvdd-usb-supply

  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra186-xudc
              - nvidia,tegra194-xudc
              - nvidia,tegra234-xudc
    then:
      properties:
        reg:
          maxItems: 2
        reg-names:
          maxItems: 2
        clocks:
          maxItems: 4
        clock-names:
          maxItems: 4

  - if:
      properties:
        compatible:
          contains:
            enum:
              - nvidia,tegra194-xudc
              - nvidia,tegra234-xudc
    then:
      required:
        - dma-coherent

additionalProperties: false

Tegra210 XUDC 예제

179-211

예제 `usb@700d0000`은 `base`, `fpci`, `ipfs` register 세 개와 level-high GIC SPI 44를 사용합니다. 다섯 clock 이름은 `dev`, `ss`, `ss_src`, `fs_src`, `hs_src`입니다.

device·SuperSpeed power domain과 XUSB pad controller, `usb2-0` PHY를 연결하고 1.05 V 및 3.3 V regulator를 공급합니다.

examples:
  - |
    #include <dt-bindings/clock/tegra210-car.h>
    #include <dt-bindings/gpio/tegra-gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    usb@700d0000 {
        compatible = "nvidia,tegra210-xudc";
        reg = <0x700d0000 0x8000>,
              <0x700d8000 0x1000>,
              <0x700d9000 0x1000>;
        reg-names = "base", "fpci", "ipfs";

        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;

        clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
                 <&tegra_car TEGRA210_CLK_XUSB_SS>,
                 <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
                 <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
                 <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
        clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";

        power-domains = <&pd_xusbdev>, <&pd_xusbss>;
        power-domain-names = "dev", "ss";

        nvidia,xusb-padctl = <&padctl>;

        phys = <&micro_b>;
        phy-names = "usb2-0";

        avddio-usb-supply = <&vdd_pex_1v05>;
        hvdd-usb-supply = <&vdd_3v3_sys>;
    };