← Documents Documentation/devicetree/bindings/usb/snps,dwc3.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

Synopsys DesignWare USB3 Controller

DWC3 core의 interrupt, clock, power domain과 standalone 예제를 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

snps,dwc3.yaml:1-106

DWC3 core의 interrupt, clock, power domain과 standalone 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, interrupt, clock, reset, regulator, graph endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/usb/snps,dwc3.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Synopsys DesignWare USB3 Controller
8
9 maintainers:
10 - Felipe Balbi <balbi@kernel.org>
11
12 description:
13 This is usually a subnode to DWC3 glue to which it is connected, but can also
14 be presented as a standalone DT node with an optional vendor-specific
15 compatible string.
16
17 allOf:
18 - $ref: snps,dwc3-common.yaml#
19
20 properties:
21 compatible:
22 contains:
23 oneOf:
24 - const: snps,dwc3
25 - const: synopsys,dwc3
26 deprecated: true
27
28 reg:
29 maxItems: 1
30
31 interrupts:
32 description:
33 It's either a single common DWC3 interrupt (dwc_usb3) or individual
34 interrupts for the host, gadget and DRD modes.
35 minItems: 1
36 maxItems: 4
37
38 interrupt-names:
39 minItems: 1
40 maxItems: 4
41 oneOf:
42 - const: dwc_usb3
43 - items:
44 enum: [host, peripheral, otg, wakeup]
45
46 clocks:
47 description:
48 In general the core supports three types of clocks. bus_early is a
49 SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
50 PHY is suspended. suspend clocks a small part of the USB3 core when
51 SS PHY in P3. But particular cases may differ from that having less
52 or more clock sources with another names.
53
54 clock-names:
55 contains:
56 anyOf:
57 - enum: [bus_early, ref, suspend]
58 - true
59
60 dma-coherent: true
61
62 iommus:
63 maxItems: 1
64
65 power-domains:
66 description:
67 The DWC3 has 2 power-domains. The power management unit (PMU) and
68 everything else. The PMU is typically always powered and may not have an
69 entry.
70 minItems: 1
71 items:
72 - description: Core
73 - description: Power management unit
74
75 resets:
76 minItems: 1
77
78 unevaluatedProperties: false
79
80 required:
81 - compatible
82 - reg
83 - interrupts
84
85 examples:
86 - |
87 usb@4a030000 {
88 compatible = "snps,dwc3";
89 reg = <0x4a030000 0xcfff>;
90 interrupts = <0 92 4>;
91 usb-phy = <&usb2_phy>, <&usb3_phy>;
92 snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
93 };
94 - |
95 usb@4a000000 {
96 compatible = "snps,dwc3";
97 reg = <0x4a000000 0xcfff>;
98 interrupts = <0 92 4>;
99 clocks = <&clk 1>, <&clk 2>, <&clk 3>;
100 clock-names = "bus_early", "ref", "suspend";
101 phys = <&usb2_phy>, <&usb3_phy>;
102 phy-names = "usb2-phy", "usb3-phy";
103 snps,dis_u2_susphy_quirk;
104 snps,dis_enblslpm_quirk;
105 };
106 ...
107

3. 한국어 전문 번역

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

Synopsys DesignWare USB3 controller

1-16

GPL-2.0으로 배포되는 이 스키마는 Synopsys DesignWare USB3 controller를 정의합니다. 보통 DWC3 glue에 연결된 subnode지만, vendor별 compatible을 선택적으로 포함한 standalone DT node일 수도 있습니다. 관리자는 Felipe Balbi입니다.

공통 schema, compatible과 interrupt

17-45

`snps,dwc3-common.yaml`을 상속합니다. compatible에는 `snps,dwc3`가 포함되어야 하며 deprecated `synopsys,dwc3`도 허용합니다. register 영역은 하나입니다.

interrupt는 공통 `dwc_usb3` 하나이거나 host·peripheral·otg·wakeup mode별 최대 네 개입니다. `interrupt-names`도 같은 두 형식 가운데 하나를 사용합니다.

allOf:
  - $ref: snps,dwc3-common.yaml#

properties:
  compatible:
    contains:
      oneOf:
        - const: snps,dwc3
        - const: synopsys,dwc3
          deprecated: true

  reg:
    maxItems: 1

  interrupts:
    description:
      It's either a single common DWC3 interrupt (dwc_usb3) or individual
      interrupts for the host, gadget and DRD modes.
    minItems: 1
    maxItems: 4

  interrupt-names:
    minItems: 1
    maxItems: 4
    oneOf:
      - const: dwc_usb3
      - items:
          enum: [host, peripheral, otg, wakeup]

clock, IOMMU와 power domain

46-84

일반적인 core clock은 세 종류입니다. `bus_early`는 AHB/AXI/Native SoC bus clock, `ref`는 UTMI/ULPI PHY가 suspend일 때 ITP를 생성하고, `suspend`는 SuperSpeed PHY가 P3일 때 USB3 core의 작은 영역을 구동합니다. 실제 platform은 이름과 수가 다를 수 있습니다.

DMA coherence를 표시할 수 있고 IOMMU는 하나입니다. power domain은 core와 PMU 순서로 최대 두 개이며 PMU는 보통 항상 켜져 있어 생략될 수 있습니다. reset은 최소 하나입니다. 필수 속성은 `compatible`, `reg`, `interrupts`이고 평가되지 않은 추가 속성은 허용하지 않습니다.

  clocks:
    description:
      In general the core supports three types of clocks. bus_early is a
      SoC Bus Clock (AHB/AXI/Native). ref generates ITP when the UTMI/ULPI
      PHY is suspended. suspend clocks a small part of the USB3 core when
      SS PHY in P3. But particular cases may differ from that having less
      or more clock sources with another names.

  clock-names:
    contains:
      anyOf:
        - enum: [bus_early, ref, suspend]
        - true

  dma-coherent: true

  iommus:
    maxItems: 1

  power-domains:
    description:
      The DWC3 has 2 power-domains. The power management unit (PMU) and
      everything else. The PMU is typically always powered and may not have an
      entry.
    minItems: 1
    items:
      - description: Core
      - description: Power management unit

  resets:
    minItems: 1

unevaluatedProperties: false

required:
  - compatible
  - reg
  - interrupts

legacy usb-phy와 generic PHY 예제

85-106

첫 예제는 `usb@4a030000`에 USB2·USB3 legacy `usb-phy`와 INCR burst 길이 1·4·8·16을 지정합니다. 둘째 예제는 `bus_early`, `ref`, `suspend` 세 clock과 generic USB2·USB3 PHY를 연결하고 USB2 suspend PHY 및 enable-sleep-LPM quirk를 비활성화합니다.

examples:
  - |
    usb@4a030000 {
      compatible = "snps,dwc3";
      reg = <0x4a030000 0xcfff>;
      interrupts = <0 92 4>;
      usb-phy = <&usb2_phy>, <&usb3_phy>;
      snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
    };
  - |
    usb@4a000000 {
      compatible = "snps,dwc3";
      reg = <0x4a000000 0xcfff>;
      interrupts = <0 92 4>;
      clocks = <&clk 1>, <&clk 2>, <&clk 3>;
      clock-names = "bus_early", "ref", "suspend";
      phys = <&usb2_phy>, <&usb3_phy>;
      phy-names = "usb2-phy", "usb3-phy";
      snps,dis_u2_susphy_quirk;
      snps,dis_enblslpm_quirk;
    };
...