요약·해설과 원문, 전문 번역을 서로 분리했습니다. 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/rockchip,rk3399-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip RK3399 SuperSpeed DWC3 USB SoC controller
maintainers:
- Heiko Stuebner <[email protected]>
properties:
compatible:
const: rockchip,rk3399-dwc3
'#address-cells':
const: 2
'#size-cells':
const: 2
ranges: true
clocks:
items:
- description:
Controller reference clock, must to be 24 MHz
- description:
Controller suspend clock, must to be 24 MHz or 32 KHz
- description:
Master/Core clock, must to be >= 62.5 MHz for SS
operation and >= 30MHz for HS operation
- description:
USB3 aclk peri
- description:
USB3 aclk
- description:
Controller grf clock
clock-names:
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: aclk_usb3_rksoc_axi_perf
- const: aclk_usb3
- const: grf_clk
resets:
maxItems: 1
reset-names:
const: usb3-otg
patternProperties:
'^usb@':
$ref: snps,dwc3.yaml#
additionalProperties: false
required:
- compatible
- '#address-cells'
- '#size-cells'
- ranges
- clocks
- clock-names
- resets
- reset-names
examples:
- |
#include <dt-bindings/clock/rk3399-cru.h>
#include <dt-bindings/power/rk3399-power.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
usb {
compatible = "rockchip,rk3399-dwc3";
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru SCLK_USB3OTG0_SUSPEND>,
<&cru ACLK_USB3OTG0>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
<&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
clock-names = "ref_clk", "suspend_clk",
"bus_clk", "aclk_usb3_rksoc_axi_perf",
"aclk_usb3", "grf_clk";
resets = <&cru SRST_A_USB3_OTG0>;
reset-names = "usb3-otg";
usb@fe800000 {
compatible = "snps,dwc3";
reg = <0x0 0xfe800000 0x0 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru ACLK_USB3OTG0>,
<&cru SCLK_USB3OTG0_SUSPEND>;
clock-names = "ref", "bus_early", "suspend";
dr_mode = "otg";
phys = <&u2phy0_otg>, <&tcphy0_usb3>;
phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi_wide";
snps,dis_enblslpm_quirk;
snps,dis-u2-freeclk-exists-quirk;
snps,dis_u2_susphy_quirk;
snps,dis-del-phy-power-chg-quirk;
snps,dis-tx-ipgap-linecheck-quirk;
power-domains = <&power RK3399_PD_USB3>;
};
};
};
...
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
RK3399 DWC3 wrapper
1-11GPL-2.0으로 배포되는 이 스키마는 Rockchip RK3399 SuperSpeed DWC3 USB SoC controller wrapper를 정의합니다. 관리자는 Heiko Stuebner입니다.
bus cell, 여섯 clock과 reset
12-54compatible은 `rockchip,rk3399-dwc3`이고 child 주소와 크기는 각각 2-cell이며 `ranges`를 사용합니다. clock 여섯 개는 24 MHz reference, 24 MHz 또는 32 KHz suspend, SS 62.5 MHz 이상·HS 30 MHz 이상 bus, USB3 ACLK peripheral, USB3 ACLK, GRF clock 순서입니다.
clock 이름은 `ref_clk`, `suspend_clk`, `bus_clk`, `aclk_usb3_rksoc_axi_perf`, `aclk_usb3`, `grf_clk`입니다. reset은 하나이고 이름은 `usb3-otg`입니다.
properties:
compatible:
const: rockchip,rk3399-dwc3
'#address-cells':
const: 2
'#size-cells':
const: 2
ranges: true
clocks:
items:
- description:
Controller reference clock, must to be 24 MHz
- description:
Controller suspend clock, must to be 24 MHz or 32 KHz
- description:
Master/Core clock, must to be >= 62.5 MHz for SS
operation and >= 30MHz for HS operation
- description:
USB3 aclk peri
- description:
USB3 aclk
- description:
Controller grf clock
clock-names:
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: aclk_usb3_rksoc_axi_perf
- const: aclk_usb3
- const: grf_clk
resets:
maxItems: 1
reset-names:
const: usb3-otg
DWC3 child와 필수 속성
55-70`usb@...` child는 `snps,dwc3.yaml`을 따릅니다. wrapper 필수 속성은 `compatible`, address/size cell, `ranges`, `clocks`, `clock-names`, `resets`, `reset-names`이며 추가 속성은 허용하지 않습니다.
patternProperties:
'^usb@':
$ref: snps,dwc3.yaml#
additionalProperties: false
required:
- compatible
- '#address-cells'
- '#size-cells'
- ranges
- clocks
- clock-names
- resets
- reset-names
RK3399 wrapper와 DWC3 child 예제
71-115예제 wrapper는 여섯 clock과 `SRST_A_USB3_OTG0` reset을 연결합니다. child `usb@fe800000`은 Synopsys DWC3, GIC SPI 105, `ref`·`bus_early`·`suspend` clock, USB2·USB3 PHY와 `utmi_wide`를 사용합니다.
child는 enable sleep, U2 free clock, U2 suspend PHY, delayed PHY power change, TX IP gap line check 관련 다섯 quirk를 비활성화하고 RK3399 USB3 power domain을 연결합니다.
examples:
- |
#include <dt-bindings/clock/rk3399-cru.h>
#include <dt-bindings/power/rk3399-power.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
usb {
compatible = "rockchip,rk3399-dwc3";
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru SCLK_USB3OTG0_SUSPEND>,
<&cru ACLK_USB3OTG0>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
<&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
clock-names = "ref_clk", "suspend_clk",
"bus_clk", "aclk_usb3_rksoc_axi_perf",
"aclk_usb3", "grf_clk";
resets = <&cru SRST_A_USB3_OTG0>;
reset-names = "usb3-otg";
usb@fe800000 {
compatible = "snps,dwc3";
reg = <0x0 0xfe800000 0x0 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru ACLK_USB3OTG0>,
<&cru SCLK_USB3OTG0_SUSPEND>;
clock-names = "ref", "bus_early", "suspend";
dr_mode = "otg";
phys = <&u2phy0_otg>, <&tcphy0_usb3>;
phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi_wide";
snps,dis_enblslpm_quirk;
snps,dis-u2-freeclk-exists-quirk;
snps,dis_u2_susphy_quirk;
snps,dis-del-phy-power-chg-quirk;
snps,dis-tx-ipgap-linecheck-quirk;
power-domains = <&power RK3399_PD_USB3>;
};
};
};
...
요약과 해설
rockchip,rk3399-dwc3.yaml:1-115RK3399 DWC3 wrapper의 여섯 clock, reset과 child quirk를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, clock, reset, PHY, quirk, source path와 원문 줄 좌표를 원형대로 보존합니다.