요약·해설과 원문, 전문 번역을 서로 분리했습니다. 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/ti,j721e-usb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: TI wrapper module for the Cadence USBSS-DRD controller
maintainers:
- Roger Quadros <rogerq@kernel.org>
properties:
compatible:
oneOf:
- const: ti,j721e-usb
- items:
- const: ti,am64-usb
- const: ti,j721e-usb
reg:
maxItems: 1
ranges: true
power-domains:
description:
PM domain provider node and an args specifier containing
the USB device id value. See,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
maxItems: 1
clocks:
description: Clock phandles to usb2_refclk and lpm_clk
minItems: 2
maxItems: 2
clock-names:
items:
- const: ref
- const: lpm
ti,usb2-only:
description:
If present, it restricts the controller to USB2.0 mode of
operation. Must be present if USB3 PHY is not available
for USB.
type: boolean
ti,vbus-divider:
description:
Should be present if USB VBUS line is connected to the
VBUS pin of the SoC via a 1/3 voltage divider.
type: boolean
'#address-cells':
const: 2
'#size-cells':
const: 2
dma-coherent: true
patternProperties:
"^usb@":
type: object
required:
- compatible
- reg
- power-domains
- clocks
- clock-names
additionalProperties: false
examples:
- |
#include <dt-bindings/soc/ti,sci_pm_domain.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
cdns_usb@4104000 {
compatible = "ti,j721e-usb";
reg = <0x00 0x4104000 0x00 0x100>;
power-domains = <&k3_pds 288 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 288 15>, <&k3_clks 288 3>;
clock-names = "ref", "lpm";
assigned-clocks = <&k3_clks 288 15>; /* USB2_REFCLK */
assigned-clock-parents = <&k3_clks 288 16>; /* HFOSC0 */
#address-cells = <2>;
#size-cells = <2>;
usb@6000000 {
compatible = "cdns,usb3";
reg = <0x00 0x6000000 0x00 0x10000>,
<0x00 0x6010000 0x00 0x10000>,
<0x00 0x6020000 0x00 0x10000>;
reg-names = "otg", "xhci", "dev";
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>, /* irq.0 */
<GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, /* irq.6 */
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; /* otgirq.0 */
interrupt-names = "host",
"peripheral",
"otg";
maximum-speed = "super-speed";
dr_mode = "otg";
};
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
TI Cadence USBSS-DRD wrapper
1-11GPL-2.0으로 배포되는 이 스키마는 Cadence USBSS-DRD controller를 감싸는 TI wrapper module을 정의합니다. 관리자는 Roger Quadros입니다.
SoC 호환성과 power domain
12-31compatible은 단독 `ti,j721e-usb`이거나 `ti,am64-usb` 다음에 fallback `ti,j721e-usb`을 두는 형식입니다. register는 하나이고 `ranges`로 child address space를 변환합니다.
`power-domains`에는 PM domain provider phandle과 USB device id 인수를 하나 지정하며 상세 형식은 `Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml`을 따릅니다.
properties:
compatible:
oneOf:
- const: ti,j721e-usb
- items:
- const: ti,am64-usb
- const: ti,j721e-usb
reg:
maxItems: 1
ranges: true
power-domains:
description:
PM domain provider node and an args specifier containing
the USB device id value. See,
Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
maxItems: 1
clock과 USB2 전용 동작
32-62clock은 `usb2_refclk`와 `lpm_clk` 두 개이며 이름은 `ref`, `lpm`입니다. `ti,usb2-only`는 controller 동작을 USB 2.0으로 제한하며 USB3 PHY를 사용할 수 없을 때 반드시 지정해야 합니다.
`ti,vbus-divider`는 USB VBUS line이 1/3 voltage divider를 거쳐 SoC VBUS pin에 연결됐음을 표시합니다. address와 size cell 수는 모두 2이고 DMA coherent 동작을 지원합니다.
clocks:
description: Clock phandles to usb2_refclk and lpm_clk
minItems: 2
maxItems: 2
clock-names:
items:
- const: ref
- const: lpm
ti,usb2-only:
description:
If present, it restricts the controller to USB2.0 mode of
operation. Must be present if USB3 PHY is not available
for USB.
type: boolean
ti,vbus-divider:
description:
Should be present if USB VBUS line is connected to the
VBUS pin of the SoC via a 1/3 voltage divider.
type: boolean
'#address-cells':
const: 2
'#size-cells':
const: 2
dma-coherent: true
USB child와 필수 속성
63-75`usb@`로 시작하는 child는 object입니다. wrapper에는 compatible, register, power domain, clocks와 clock names가 필수이며 추가 속성은 허용하지 않습니다.
patternProperties:
"^usb@":
type: object
required:
- compatible
- reg
- power-domains
- clocks
- clock-names
additionalProperties: false
J721E Cadence OTG 예제
76-112예제 `cdns_usb@4104000`은 exclusive TI SCI power domain 288과 reference·LPM clock을 사용합니다. USB2 reference clock parent는 `HFOSC0`으로 지정합니다.
내부 `usb@6000000` Cadence controller는 OTG·xHCI·device register 영역과 host·peripheral·OTG interrupt를 갖습니다. `maximum-speed`는 `super-speed`, `dr_mode`는 `otg`입니다.
examples:
- |
#include <dt-bindings/soc/ti,sci_pm_domain.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
cdns_usb@4104000 {
compatible = "ti,j721e-usb";
reg = <0x00 0x4104000 0x00 0x100>;
power-domains = <&k3_pds 288 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 288 15>, <&k3_clks 288 3>;
clock-names = "ref", "lpm";
assigned-clocks = <&k3_clks 288 15>; /* USB2_REFCLK */
assigned-clock-parents = <&k3_clks 288 16>; /* HFOSC0 */
#address-cells = <2>;
#size-cells = <2>;
usb@6000000 {
compatible = "cdns,usb3";
reg = <0x00 0x6000000 0x00 0x10000>,
<0x00 0x6010000 0x00 0x10000>,
<0x00 0x6020000 0x00 0x10000>;
reg-names = "otg", "xhci", "dev";
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>, /* irq.0 */
<GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, /* irq.6 */
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; /* otgirq.0 */
interrupt-names = "host",
"peripheral",
"otg";
maximum-speed = "super-speed";
dr_mode = "otg";
};
};
};
요약과 해설
ti,j721e-usb.yaml:1-112J721E·AM64 USB wrapper의 clock, USB2 전용 모드와 Cadence child를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, clock, reset, power domain, graph endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.