← Documents Documentation/devicetree/bindings/usb/dwc3-xilinx.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

Xilinx SuperSpeed DWC3 USB SoC Controller

ZynqMP·Versal DWC3 wrapper의 clock·reset·PHY·power domain과 host-mode child 예제를 설명합니다.

Source pathDocumentation/devicetree/bindings/usb/dwc3-xilinx.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

dwc3-xilinx.yaml:1-136

ZynqMP·Versal DWC3 wrapper의 clock·reset·PHY·power domain과 host-mode child 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, reset, PHY, power, 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/dwc3-xilinx.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Xilinx SuperSpeed DWC3 USB SoC controller
8
9 maintainers:
10 - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
11
12 properties:
13 compatible:
14 items:
15 - enum:
16 - xlnx,zynqmp-dwc3
17 - xlnx,versal-dwc3
18 reg:
19 maxItems: 1
20
21 "#address-cells":
22 enum: [ 1, 2 ]
23
24 "#size-cells":
25 enum: [ 1, 2 ]
26
27 ranges: true
28
29 dma-coherent: true
30
31 power-domains:
32 description: specifies a phandle to PM domain provider node
33 maxItems: 1
34
35 clocks:
36 description:
37 A list of phandle and clock-specifier pairs for the clocks
38 listed in clock-names.
39 items:
40 - description: Master/Core clock, has to be >= 125 MHz
41 for SS operation and >= 60MHz for HS operation.
42 - description: Clock source to core during PHY power down.
43
44 clock-names:
45 items:
46 - const: bus_clk
47 - const: ref_clk
48
49 resets:
50 description:
51 A list of phandles for resets listed in reset-names.
52
53 items:
54 - description: USB core reset
55 - description: USB hibernation reset
56 - description: USB APB reset
57
58 reset-names:
59 items:
60 - const: usb_crst
61 - const: usb_hibrst
62 - const: usb_apbrst
63
64 phys:
65 minItems: 1
66 maxItems: 2
67
68 phy-names:
69 minItems: 1
70 maxItems: 2
71 items:
72 enum:
73 - usb2-phy
74 - usb3-phy
75
76 reset-gpios:
77 description: GPIO used for the reset ulpi-phy
78 maxItems: 1
79
80 # Required child node:
81
82 patternProperties:
83 "^usb@[0-9a-f]+$":
84 $ref: snps,dwc3.yaml#
85
86 required:
87 - compatible
88 - reg
89 - "#address-cells"
90 - "#size-cells"
91 - ranges
92 - power-domains
93 - clocks
94 - clock-names
95 - resets
96 - reset-names
97
98 additionalProperties: false
99
100 examples:
101 - |
102 #include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
103 #include <dt-bindings/power/xlnx-zynqmp-power.h>
104 #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
105 #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
106 #include <dt-bindings/phy/phy.h>
107 axi {
108 #address-cells = <2>;
109 #size-cells = <2>;
110
111 usb@0 {
112 #address-cells = <0x2>;
113 #size-cells = <0x2>;
114 compatible = "xlnx,zynqmp-dwc3";
115 reg = <0x0 0xff9d0000 0x0 0x100>;
116 clocks = <&zynqmp_clk 32>, <&zynqmp_clk 34>;
117 clock-names = "bus_clk", "ref_clk";
118 power-domains = <&zynqmp_firmware PD_USB_0>;
119 resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
120 <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
121 <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
122 reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
123 phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
124 phy-names = "usb3-phy";
125 ranges;
126
127 usb@fe200000 {
128 compatible = "snps,dwc3";
129 reg = <0x0 0xfe200000 0x0 0x40000>;
130 interrupt-names = "host", "otg";
131 interrupts = <0 65 4>, <0 69 4>;
132 dr_mode = "host";
133 dma-coherent;
134 };
135 };
136 };
137

3. 한국어 전문 번역

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

Xilinx SuperSpeed DWC3 wrapper

1-11

GPL-2.0 또는 BSD-2-Clause로 배포되는 이 schema는 Xilinx SuperSpeed DWC3 USB SoC controller를 정의합니다. 관리자는 Radhey Shyam Pandey입니다.

Compatible, address와 power domain

12-34

`compatible`은 `xlnx,zynqmp-dwc3` 또는 `xlnx,versal-dwc3`입니다. register 영역은 최대 하나이고 address cell과 size cell 수는 각각 1 또는 2입니다.

`ranges`와 `dma-coherent`를 허용합니다. `power-domains`는 PM domain provider node를 가리키는 phandle 하나입니다.

properties:
  compatible:
    items:
      - enum:
          - xlnx,zynqmp-dwc3
          - xlnx,versal-dwc3
  reg:
    maxItems: 1

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  ranges: true

  dma-coherent: true

  power-domains:
    description: specifies a phandle to PM domain provider node
    maxItems: 1

Clock, reset과 PHY

35-78

clock은 두 개입니다. `bus_clk`는 master/core clock이며 SuperSpeed 동작에는 125 MHz 이상, HighSpeed 동작에는 60 MHz 이상이어야 합니다. `ref_clk`는 PHY power-down 중 core에 공급되는 clock source입니다.

reset은 USB core, USB hibernation, USB APB 순서이고 이름은 `usb_crst`, `usb_hibrst`, `usb_apbrst`입니다.

PHY는 1~2개이며 이름은 `usb2-phy` 또는 `usb3-phy`입니다. `reset-gpios`는 ULPI PHY reset에 사용하는 GPIO 하나를 지정합니다.

clocks:
  description:
    A list of phandle and clock-specifier pairs for the clocks
    listed in clock-names.
  items:
    - description: Master/Core clock, has to be >= 125 MHz
        for SS operation and >= 60MHz for HS operation.
    - description: Clock source to core during PHY power down.

clock-names:
  items:
    - const: bus_clk
    - const: ref_clk

resets:
  description:
    A list of phandles for resets listed in reset-names.

  items:
    - description: USB core reset
    - description: USB hibernation reset
    - description: USB APB reset

reset-names:
  items:
    - const: usb_crst
    - const: usb_hibrst
    - const: usb_apbrst

phys:
  minItems: 1
  maxItems: 2

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

reset-gpios:
  description: GPIO used for the reset ulpi-phy
  maxItems: 1

DWC3 child와 필수 속성

79-99

16진 주소를 이름에 넣은 `usb@...` child node는 `snps,dwc3.yaml`을 따라야 합니다.

필수 속성은 `compatible`, `reg`, `#address-cells`, `#size-cells`, `ranges`, `power-domains`, `clocks`, `clock-names`, `resets`, `reset-names`입니다. 정의되지 않은 추가 속성은 허용하지 않습니다.


# Required child node:

patternProperties:
  "^usb@[0-9a-f]+$":
    $ref: snps,dwc3.yaml#

required:
  - compatible
  - reg
  - "#address-cells"
  - "#size-cells"
  - ranges
  - power-domains
  - clocks
  - clock-names
  - resets
  - reset-names

additionalProperties: false

ZynqMP wrapper와 host core 예제

100-136

예제 AXI bus 아래의 `usb@0` wrapper는 ZynqMP compatible, 0xff9d0000의 0x100-byte register 영역, bus·reference clock, `PD_USB_0` power domain, core·hibernation·APB reset, USB3 PHY와 빈 `ranges`를 지정합니다.

child `usb@fe200000`은 `snps,dwc3`, 0x40000-byte register 영역, `host`·`otg` interrupt 두 개, host mode, DMA coherency를 사용합니다. include와 모든 숫자·symbol은 원문 코드 그대로 보존됩니다.

examples:
  - |
    #include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
    #include <dt-bindings/power/xlnx-zynqmp-power.h>
    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
    #include <dt-bindings/phy/phy.h>
    axi {
        #address-cells = <2>;
        #size-cells = <2>;

        usb@0 {
            #address-cells = <0x2>;
            #size-cells = <0x2>;
            compatible = "xlnx,zynqmp-dwc3";
            reg = <0x0 0xff9d0000 0x0 0x100>;
            clocks = <&zynqmp_clk 32>, <&zynqmp_clk 34>;
            clock-names = "bus_clk", "ref_clk";
            power-domains = <&zynqmp_firmware PD_USB_0>;
            resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
                     <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
                     <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
            reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
            phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
            phy-names = "usb3-phy";
            ranges;

            usb@fe200000 {
                compatible = "snps,dwc3";
                reg = <0x0 0xfe200000 0x0 0x40000>;
                interrupt-names = "host", "otg";
                interrupts = <0 65 4>, <0 69 4>;
                dr_mode = "host";
                dma-coherent;
            };
        };
    };