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

Linux 6.18.37 · Devicetree Bindings / USB

NVIDIA Tegra234 xHCI Controller

Tegra234 XUSB의 BAR2, 8-port PHY, BPMP·interconnect·coherent DMA 구성을 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

nvidia,tegra234-xusb.yaml:1-159

Tegra234 XUSB의 BAR2, 8-port PHY, BPMP·interconnect·coherent DMA 구성을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, 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/nvidia,tegra234-xusb.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra234 xHCI controller
8
9 maintainers:
10 - Thierry Reding <thierry.reding@gmail.com>
11 - Jon Hunter <jonathanh@nvidia.com>
12
13 description: |
14 The Tegra xHCI controller supports both USB2 and USB3 interfaces exposed by
15 the Tegra XUSB pad controller. The xHCI controller controls up to eight
16 ports; there are four USB 2.0 ports and four USB 3.2 Gen1 x1 ports.
17
18 properties:
19 compatible:
20 const: nvidia,tegra234-xusb
21
22 reg:
23 items:
24 - description: xHCI host registers
25 - description: XUSB FPCI registers
26 - description: XUSB bar2 registers
27
28 reg-names:
29 items:
30 - const: hcd
31 - const: fpci
32 - const: bar2
33
34 interrupts:
35 items:
36 - description: xHCI host interrupt
37 - description: mailbox interrupt
38
39 clocks:
40 items:
41 - description: XUSB host clock
42 - description: XUSB Falcon source clock
43 - description: XUSB SuperSpeed clock
44 - description: XUSB SuperSpeed source clock
45 - description: XUSB HighSpeed clock source
46 - description: XUSB FullSpeed clock source
47 - description: USB PLL
48 - description: reference clock
49 - description: I/O PLL
50
51 clock-names:
52 items:
53 - const: xusb_host
54 - const: xusb_falcon_src
55 - const: xusb_ss
56 - const: xusb_ss_src
57 - const: xusb_hs_src
58 - const: xusb_fs_src
59 - const: pll_u_480m
60 - const: clk_m
61 - const: pll_e
62
63 interconnects:
64 items:
65 - description: read client
66 - description: write client
67
68 interconnect-names:
69 items:
70 - const: dma-mem # read
71 - const: write
72
73 iommus:
74 maxItems: 1
75
76 nvidia,xusb-padctl:
77 $ref: /schemas/types.yaml#/definitions/phandle
78 description: phandle to the XUSB pad controller that is used to configure
79 the USB pads used by the XHCI controller
80
81 phys:
82 minItems: 1
83 maxItems: 8
84
85 phy-names:
86 minItems: 1
87 maxItems: 8
88 items:
89 enum:
90 - usb2-0
91 - usb2-1
92 - usb2-2
93 - usb2-3
94 - usb3-0
95 - usb3-1
96 - usb3-2
97 - usb3-3
98
99 power-domains:
100 items:
101 - description: XUSBC power domain (for Host and USB 2.0)
102 - description: XUSBA power domain (for SuperSpeed)
103
104 power-domain-names:
105 items:
106 - const: xusb_host
107 - const: xusb_ss
108
109 dma-coherent: true
110
111 allOf:
112 - $ref: usb-xhci.yaml
113
114 unevaluatedProperties: false
115
116 examples:
117 - |
118 #include <dt-bindings/clock/tegra234-clock.h>
119 #include <dt-bindings/interrupt-controller/arm-gic.h>
120 #include <dt-bindings/memory/tegra234-mc.h>
121 #include <dt-bindings/power/tegra234-powergate.h>
122
123 usb@3610000 {
124 compatible = "nvidia,tegra234-xusb";
125 reg = <0x03610000 0x40000>,
126 <0x03600000 0x10000>,
127 <0x03650000 0x10000>;
128 reg-names = "hcd", "fpci", "bar2";
129
130 interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
131 <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
132
133 clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>,
134 <&bpmp TEGRA234_CLK_XUSB_FALCON>,
135 <&bpmp TEGRA234_CLK_XUSB_CORE_SS>,
136 <&bpmp TEGRA234_CLK_XUSB_SS>,
137 <&bpmp TEGRA234_CLK_CLK_M>,
138 <&bpmp TEGRA234_CLK_XUSB_FS>,
139 <&bpmp TEGRA234_CLK_UTMIP_PLL>,
140 <&bpmp TEGRA234_CLK_CLK_M>,
141 <&bpmp TEGRA234_CLK_PLLE>;
142 clock-names = "xusb_host", "xusb_falcon_src",
143 "xusb_ss", "xusb_ss_src", "xusb_hs_src",
144 "xusb_fs_src", "pll_u_480m", "clk_m",
145 "pll_e";
146 interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTR &emc>,
147 <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTW &emc>;
148 interconnect-names = "dma-mem", "write";
149 iommus = <&smmu_niso1 TEGRA234_SID_XUSB_HOST>;
150
151 power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>,
152 <&bpmp TEGRA234_POWER_DOMAIN_XUSBA>;
153 power-domain-names = "xusb_host", "xusb_ss";
154
155 nvidia,xusb-padctl = <&xusb_padctl>;
156
157 phys = <&pad_lanes_usb2_0>;
158 phy-names = "usb2-0";
159 };
160

3. 한국어 전문 번역

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

NVIDIA Tegra234 xHCI

1-17

GPL-2.0-only 또는 BSD-2-Clause로 배포되는 이 schema는 NVIDIA Tegra234 xHCI controller를 정의합니다. controller는 최대 여덟 port를 제어하며 USB 2.0 port 네 개와 USB 3.2 Gen1 x1 port 네 개로 구성됩니다. 관리자는 Thierry Reding과 Jon Hunter입니다.

HCD·FPCI·BAR2와 interrupt

18-38

`compatible`은 `nvidia,tegra234-xusb`입니다. register는 xHCI host `hcd`, XUSB FPCI `fpci`, XUSB BAR2 `bar2` 순서의 세 개입니다. interrupt는 xHCI host와 mailbox 순서의 두 개입니다.

properties:
  compatible:
    const: nvidia,tegra234-xusb

  reg:
    items:
      - description: xHCI host registers
      - description: XUSB FPCI registers
      - description: XUSB bar2 registers

  reg-names:
    items:
      - const: hcd
      - const: fpci
      - const: bar2

  interrupts:
    items:
      - description: xHCI host interrupt
      - description: mailbox interrupt

아홉 clock, interconnect와 IOMMU

39-75

clock은 XUSB host, Falcon source, SuperSpeed, SuperSpeed source, High-Speed source, Full-Speed source, USB PLL, reference, I/O PLL 순서이며 이름은 `xusb_host`, `xusb_falcon_src`, `xusb_ss`, `xusb_ss_src`, `xusb_hs_src`, `xusb_fs_src`, `pll_u_480m`, `clk_m`, `pll_e`입니다.

memory interconnect는 read `dma-mem`과 `write` client 두 개이고 IOMMU는 하나만 허용합니다.

clocks:
  items:
    - description: XUSB host clock
    - description: XUSB Falcon source clock
    - description: XUSB SuperSpeed clock
    - description: XUSB SuperSpeed source clock
    - description: XUSB HighSpeed clock source
    - description: XUSB FullSpeed clock source
    - description: USB PLL
    - description: reference clock
    - description: I/O PLL

clock-names:
  items:
    - const: xusb_host
    - const: xusb_falcon_src
    - const: xusb_ss
    - const: xusb_ss_src
    - const: xusb_hs_src
    - const: xusb_fs_src
    - const: pll_u_480m
    - const: clk_m
    - const: pll_e

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

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

iommus:
  maxItems: 1

여덟 PHY, power domain과 coherent DMA

76-110

XUSB pad controller phandle을 사용합니다. PHY와 이름은 1~8개이며 USB2 port 0~3과 USB3 port 0~3을 허용합니다.

power domain은 Host·USB2용 XUSBC `xusb_host`와 SuperSpeed용 XUSBA `xusb_ss`입니다. `dma-coherent` 속성을 지원합니다.

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 XHCI controller

phys:
  minItems: 1
  maxItems: 8

phy-names:
  minItems: 1
  maxItems: 8
  items:
    enum:
      - usb2-0
      - usb2-1
      - usb2-2
      - usb2-3
      - usb3-0
      - usb3-1
      - usb3-2
      - usb3-3

power-domains:
  items:
    - description: XUSBC power domain (for Host and USB 2.0)
    - description: XUSBA power domain (for SuperSpeed)

power-domain-names:
  items:
    - const: xusb_host
    - const: xusb_ss

dma-coherent: true

공통 xHCI schema

111-115

공통 `usb-xhci.yaml`을 상속하며 평가되지 않은 추가 속성을 허용하지 않습니다.

allOf:
  - $ref: usb-xhci.yaml

unevaluatedProperties: false

Tegra234 BPMP XUSB 예제

116-159

예제 `usb@3610000`은 `hcd`, `fpci`, `bar2` register와 level-high GIC SPI 163·164, BPMP clock 아홉 개를 사용합니다.

host read·write interconnect, `smmu_niso1`의 XUSB host stream ID, XUSBC·XUSBA power domain과 pad controller를 연결하며 예제 PHY는 `usb2-0` 하나입니다.

examples:
  - |
    #include <dt-bindings/clock/tegra234-clock.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/memory/tegra234-mc.h>
    #include <dt-bindings/power/tegra234-powergate.h>

    usb@3610000 {
        compatible = "nvidia,tegra234-xusb";
        reg = <0x03610000 0x40000>,
              <0x03600000 0x10000>,
              <0x03650000 0x10000>;
        reg-names = "hcd", "fpci", "bar2";

        interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
                     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;

        clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>,
                 <&bpmp TEGRA234_CLK_XUSB_FALCON>,
                 <&bpmp TEGRA234_CLK_XUSB_CORE_SS>,
                 <&bpmp TEGRA234_CLK_XUSB_SS>,
                 <&bpmp TEGRA234_CLK_CLK_M>,
                 <&bpmp TEGRA234_CLK_XUSB_FS>,
                 <&bpmp TEGRA234_CLK_UTMIP_PLL>,
                 <&bpmp TEGRA234_CLK_CLK_M>,
                 <&bpmp TEGRA234_CLK_PLLE>;
        clock-names = "xusb_host", "xusb_falcon_src",
                      "xusb_ss", "xusb_ss_src", "xusb_hs_src",
                      "xusb_fs_src", "pll_u_480m", "clk_m",
                      "pll_e";
        interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTR &emc>,
                        <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTW &emc>;
        interconnect-names = "dma-mem", "write";
        iommus = <&smmu_niso1 TEGRA234_SID_XUSB_HOST>;

        power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>,
                        <&bpmp TEGRA234_POWER_DOMAIN_XUSBA>;
        power-domain-names = "xusb_host", "xusb_ss";

        nvidia,xusb-padctl = <&xusb_padctl>;

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