요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/generic-ehci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB EHCI Controller
maintainers:
- Greg Kroah-Hartman <[email protected]>
allOf:
- $ref: usb-hcd.yaml
- if:
properties:
compatible:
not:
contains:
const: ibm,usb-ehci-440epx
then:
properties:
reg:
maxItems: 1
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
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
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
required:
- compatible
- reg
- interrupts
unevaluatedProperties: false
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";
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
USB EHCI controller
1-11GPL-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-113register 영역은 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";
};
...
요약과 해설
generic-ehci.yaml:1-189generic EHCI의 platform compatible, IBM register 예외, endian·OC·PHY flag와 두 예제를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, interrupt, reset, PHY, source path와 원문 줄 좌표를 원형대로 보존합니다.