← Documents Documentation/devicetree/bindings/usb/generic-ehci.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / USB

Generic USB EHCI Controller

generic EHCI의 platform compatible, IBM register 예외, endian·OC·PHY flag와 두 예제를 설명합니다.

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

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

1. 요약·해설

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

요약과 해설

generic-ehci.yaml:1-189

generic EHCI의 platform compatible, IBM register 예외, endian·OC·PHY flag와 두 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, reset, PHY, 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/generic-ehci.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: USB EHCI Controller
8
9 maintainers:
10 - Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11
12 allOf:
13 - $ref: usb-hcd.yaml
14 - if:
15 properties:
16 compatible:
17 not:
18 contains:
19 const: ibm,usb-ehci-440epx
20 then:
21 properties:
22 reg:
23 maxItems: 1
24
25 properties:
26 compatible:
27 oneOf:
28 - items:
29 - enum:
30 - allwinner,sun4i-a10-ehci
31 - allwinner,sun50i-a100-ehci
32 - allwinner,sun50i-a64-ehci
33 - allwinner,sun50i-h6-ehci
34 - allwinner,sun50i-h616-ehci
35 - allwinner,sun55i-a523-ehci
36 - allwinner,sun5i-a13-ehci
37 - allwinner,sun6i-a31-ehci
38 - allwinner,sun7i-a20-ehci
39 - allwinner,sun8i-a23-ehci
40 - allwinner,sun8i-a83t-ehci
41 - allwinner,sun8i-h3-ehci
42 - allwinner,sun8i-r40-ehci
43 - allwinner,sun8i-v3s-ehci
44 - allwinner,sun9i-a80-ehci
45 - allwinner,sun20i-d1-ehci
46 - aspeed,ast2400-ehci
47 - aspeed,ast2500-ehci
48 - aspeed,ast2600-ehci
49 - brcm,bcm3384-ehci
50 - brcm,bcm63268-ehci
51 - brcm,bcm6328-ehci
52 - brcm,bcm6358-ehci
53 - brcm,bcm6362-ehci
54 - brcm,bcm6368-ehci
55 - brcm,bcm7125-ehci
56 - brcm,bcm7346-ehci
57 - brcm,bcm7358-ehci
58 - brcm,bcm7360-ehci
59 - brcm,bcm7362-ehci
60 - brcm,bcm7420-ehci
61 - brcm,bcm7425-ehci
62 - brcm,bcm7435-ehci
63 - hpe,gxp-ehci
64 - ibm,476gtr-ehci
65 - nxp,lpc1850-ehci
66 - qca,ar7100-ehci
67 - rockchip,rk3588-ehci
68 - snps,hsdk-v1.0-ehci
69 - socionext,uniphier-ehci
70 - const: generic-ehci
71 - items:
72 - enum:
73 - atmel,at91sam9g45-ehci
74 - cavium,octeon-6335-ehci
75 - ibm,usb-ehci-440epx
76 - ibm,usb-ehci-460ex
77 - nintendo,hollywood-usb-ehci
78 - st,spear600-ehci
79 - const: usb-ehci
80 - enum:
81 - generic-ehci
82 - marvell,ac5-ehci
83 - marvell,armada-3700-ehci
84 - marvell,orion-ehci
85 - nuvoton,npcm750-ehci
86 - nuvoton,npcm845-ehci
87 - ti,ehci-omap
88 - usb-ehci
89 - via,vt8500-ehci
90
91 reg:
92 minItems: 1
93 maxItems: 2
94
95 interrupts:
96 maxItems: 1
97
98 resets:
99 minItems: 1
100 maxItems: 4
101
102 clocks:
103 minItems: 1
104 maxItems: 4
105 description: |
106 In case the Renesas R-Car Gen3 SoCs:
107 - if a host only channel: first clock should be host.
108 - if a USB DRD channel: first clock should be host and second
109 one should be peripheral
110
111 power-domains:
112 maxItems: 1
113
114 big-endian:
115 $ref: /schemas/types.yaml#/definitions/flag
116 description:
117 Set this flag for HCDs with big endian descriptors and big
118 endian registers.
119
120 big-endian-desc:
121 $ref: /schemas/types.yaml#/definitions/flag
122 description:
123 Set this flag for HCDs with big endian descriptors.
124
125 big-endian-regs:
126 $ref: /schemas/types.yaml#/definitions/flag
127 description:
128 Set this flag for HCDs with big endian registers.
129
130 has-transaction-translator:
131 $ref: /schemas/types.yaml#/definitions/flag
132 description:
133 Set this flag if EHCI has a Transaction Translator built into
134 the root hub.
135
136 needs-reset-on-resume:
137 $ref: /schemas/types.yaml#/definitions/flag
138 description:
139 Set this flag to force EHCI reset after resume.
140
141 spurious-oc:
142 $ref: /schemas/types.yaml#/definitions/flag
143 description:
144 Set this flag to indicate that the hardware sometimes turns on
145 the OC bit when an over-current isn't actually present.
146
147 phys:
148 minItems: 1
149 maxItems: 3
150
151 phy-names:
152 const: usb
153
154 iommus:
155 maxItems: 1
156
157 dr_mode:
158 enum:
159 - host
160 - otg
161
162 required:
163 - compatible
164 - reg
165 - interrupts
166
167 unevaluatedProperties: false
168
169 examples:
170 - |
171 usb@e0000300 {
172 compatible = "ibm,usb-ehci-440epx", "usb-ehci";
173 interrupt-parent = <&UIC0>;
174 interrupts = <0x1a 4>;
175 reg = <0xe0000300 90>, <0xe0000390 70>;
176 big-endian;
177 };
178
179 - |
180 ehci0: usb@1c14000 {
181 compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
182 reg = <0x01c14000 0x100>;
183 interrupts = <39>;
184 clocks = <&ahb_gates 1>;
185 phys = <&usbphy 1>;
186 phy-names = "usb";
187 };
188
189 ...
190

3. 한국어 전문 번역

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

USB EHCI controller

1-11

GPL-2.0으로 배포되는 이 schema는 USB EHCI controller를 정의합니다. 관리자는 Greg Kroah-Hartman입니다.

공통 HCD와 IBM register 예외

12-24

공통 host controller 정의는 `usb-hcd.yaml`을 상속합니다. `compatible`에 `ibm,usb-ehci-440epx`가 포함되지 않은 controller는 register 영역을 최대 하나만 허용합니다. 해당 IBM controller만 두 영역을 사용할 수 있습니다.

allOf:
  - $ref: usb-hcd.yaml
  - if:
      properties:
        compatible:
          not:
            contains:
              const: ibm,usb-ehci-440epx
    then:
      properties:
        reg:
          maxItems: 1

Platform별 EHCI compatible과 fallback

25-90

`generic-ehci` fallback을 쓰는 첫 그룹에는 Allwinner Sun4i·Sun5i·Sun6i·Sun7i·Sun8i·Sun9i·Sun20i·Sun50i·Sun55i 계열, Aspeed AST2400·2500·2600, Broadcom BCM3384·63268·6328·6358·6362·6368·7125·7346·7358·7360·7362·7420·7425·7435가 포함됩니다.

같은 그룹에는 HPE GXP, IBM 476GTR, NXP LPC1850, QCA AR7100, Rockchip RK3588, Synopsys HSDK v1.0, Socionext UniPhier도 포함됩니다.

`usb-ehci` fallback 그룹은 Atmel AT91SAM9G45, Cavium Octeon 6335, IBM 440EPX·460EX, Nintendo Hollywood, ST SPEAr600입니다.

standalone 값으로 `generic-ehci`, Marvell AC5·Armada 3700·Orion, Nuvoton NPCM750·NPCM845, TI OMAP EHCI, `usb-ehci`, VIA VT8500을 허용합니다. 정확한 SoC 문자열과 순서는 아래 원문 block에 보존됩니다.

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - allwinner,sun4i-a10-ehci
              - allwinner,sun50i-a100-ehci
              - allwinner,sun50i-a64-ehci
              - allwinner,sun50i-h6-ehci
              - allwinner,sun50i-h616-ehci
              - allwinner,sun55i-a523-ehci
              - allwinner,sun5i-a13-ehci
              - allwinner,sun6i-a31-ehci
              - allwinner,sun7i-a20-ehci
              - allwinner,sun8i-a23-ehci
              - allwinner,sun8i-a83t-ehci
              - allwinner,sun8i-h3-ehci
              - allwinner,sun8i-r40-ehci
              - allwinner,sun8i-v3s-ehci
              - allwinner,sun9i-a80-ehci
              - allwinner,sun20i-d1-ehci
              - aspeed,ast2400-ehci
              - aspeed,ast2500-ehci
              - aspeed,ast2600-ehci
              - brcm,bcm3384-ehci
              - brcm,bcm63268-ehci
              - brcm,bcm6328-ehci
              - brcm,bcm6358-ehci
              - brcm,bcm6362-ehci
              - brcm,bcm6368-ehci
              - brcm,bcm7125-ehci
              - brcm,bcm7346-ehci
              - brcm,bcm7358-ehci
              - brcm,bcm7360-ehci
              - brcm,bcm7362-ehci
              - brcm,bcm7420-ehci
              - brcm,bcm7425-ehci
              - brcm,bcm7435-ehci
              - hpe,gxp-ehci
              - ibm,476gtr-ehci
              - nxp,lpc1850-ehci
              - qca,ar7100-ehci
              - rockchip,rk3588-ehci
              - snps,hsdk-v1.0-ehci
              - socionext,uniphier-ehci
          - const: generic-ehci
      - items:
          - enum:
              - atmel,at91sam9g45-ehci
              - cavium,octeon-6335-ehci
              - ibm,usb-ehci-440epx
              - ibm,usb-ehci-460ex
              - nintendo,hollywood-usb-ehci
              - st,spear600-ehci
          - const: usb-ehci
      - enum:
          - generic-ehci
          - marvell,ac5-ehci
          - marvell,armada-3700-ehci
          - marvell,orion-ehci
          - nuvoton,npcm750-ehci
          - nuvoton,npcm845-ehci
          - ti,ehci-omap
          - usb-ehci
          - via,vt8500-ehci

Register, reset, clock과 power domain

91-113

register 영역은 1~2개지만 앞선 조건에 따라 일반 controller는 최대 하나입니다. interrupt는 최대 하나, reset과 clock은 각각 1~4개, power domain은 최대 하나입니다.

Renesas R-Car Gen3에서 host-only channel의 첫 clock은 host clock입니다. USB DRD channel은 첫 clock이 host, 둘째 clock이 peripheral이어야 합니다.

reg:
  minItems: 1
  maxItems: 2

interrupts:
  maxItems: 1

resets:
  minItems: 1
  maxItems: 4

clocks:
  minItems: 1
  maxItems: 4
  description: |
    In case the Renesas R-Car Gen3 SoCs:
      - if a host only channel: first clock should be host.
      - if a USB DRD channel: first clock should be host and second
        one should be peripheral

power-domains:
  maxItems: 1

Endian, transaction translator와 PHY

114-161

`big-endian`은 descriptor와 register가 모두 big-endian일 때, `big-endian-desc`는 descriptor만, `big-endian-regs`는 register만 big-endian일 때 설정합니다.

`has-transaction-translator`는 EHCI root hub에 Transaction Translator가 내장됐음을 뜻합니다. `needs-reset-on-resume`은 resume 뒤 EHCI reset을 강제합니다. `spurious-oc`는 실제 과전류가 없는데 hardware가 간헐적으로 OC bit를 켜는 경우를 표시합니다.

PHY는 1~3개이고 이름은 `usb`입니다. IOMMU는 최대 하나이며 `dr_mode`는 `host` 또는 `otg`입니다.

big-endian:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag for HCDs with big endian descriptors and big
    endian registers.

big-endian-desc:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag for HCDs with big endian descriptors.

big-endian-regs:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag for HCDs with big endian registers.

has-transaction-translator:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag if EHCI has a Transaction Translator built into
    the root hub.

needs-reset-on-resume:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag to force EHCI reset after resume.

spurious-oc:
  $ref: /schemas/types.yaml#/definitions/flag
  description:
    Set this flag to indicate that the hardware sometimes turns on
    the OC bit when an over-current isn't actually present.

phys:
  minItems: 1
  maxItems: 3

phy-names:
  const: usb

iommus:
  maxItems: 1

dr_mode:
  enum:
    - host
    - otg

필수 속성과 추가 속성 제한

162-168

필수 속성은 `compatible`, `reg`, `interrupts`입니다. 상속 schema까지 평가한 뒤 남는 추가 속성은 허용하지 않습니다.

required:
  - compatible
  - reg
  - interrupts

unevaluatedProperties: false

IBM 440EPX와 Allwinner 예제

169-189

첫 예제는 IBM 440EPX의 두 register 영역, UIC0 interrupt와 `big-endian` flag를 보여 줍니다.

둘째 예제는 Allwinner Sun4i A10과 `generic-ehci` fallback, 0x100-byte register 영역, interrupt 39, AHB gate clock, USB PHY와 `usb` PHY 이름을 사용합니다.

examples:
  - |
    usb@e0000300 {
        compatible = "ibm,usb-ehci-440epx", "usb-ehci";
        interrupt-parent = <&UIC0>;
        interrupts = <0x1a 4>;
        reg = <0xe0000300 90>, <0xe0000390 70>;
        big-endian;
    };

  - |
    ehci0: usb@1c14000 {
        compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
        reg = <0x01c14000 0x100>;
        interrupts = <39>;
        clocks = <&ahb_gates 1>;
        phys = <&usbphy 1>;
        phy-names = "usb";
    };

...