요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,rzv2m-usb3drd.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas RZ/V2M USB 3.1 DRD controller
maintainers:
- Biju Das <[email protected]>
description: |
The RZ/V2{M, MA} USB3.1 DRD module supports the following functions
* Role swapping function by the ID pin of the Micro-AB receptacle
* Battery Charging Specification Revision 1.2
properties:
compatible:
items:
- enum:
- renesas,r9a09g011-usb3drd # RZ/V2M
- renesas,r9a09g055-usb3drd # RZ/V2MA
- const: renesas,rzv2m-usb3drd
reg:
maxItems: 1
interrupts:
items:
- description: Dual Role Device (DRD)
- description: Battery Charging
- description: Global Purpose Input
interrupt-names:
items:
- const: drd
- const: bc
- const: gpi
clocks:
items:
- description: Peripheral AXI clock
- description: APB clock
clock-names:
items:
- const: axi
- const: reg
power-domains:
maxItems: 1
resets:
maxItems: 1
ranges: true
'#address-cells':
enum: [ 1, 2 ]
'#size-cells':
enum: [ 1, 2 ]
patternProperties:
"^usb3peri@[0-9a-f]+$":
type: object
$ref: /schemas/usb/renesas,usb3-peri.yaml
"^usb@[0-9a-f]+$":
type: object
$ref: renesas,usb-xhci.yaml#
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- clock-names
- power-domains
- resets
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/r9a09g011-cpg.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb3drd: usb@85070400 {
compatible = "renesas,r9a09g011-usb3drd", "renesas,rzv2m-usb3drd";
reg = <0x85070400 0x100>;
interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "drd", "bc", "gpi";
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_DRD_RESET>;
ranges;
#address-cells = <1>;
#size-cells = <1>;
usb3host: usb@85060000 {
compatible = "renesas,r9a09g011-xhci",
"renesas,rzv2m-xhci";
reg = <0x85060000 0x2000>;
interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_H>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_H>;
};
usb3peri: usb3peri@85070000 {
compatible = "renesas,r9a09g011-usb3-peri",
"renesas,rzv2m-usb3-peri";
reg = <0x85070000 0x400>;
interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_P>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
RZ/V2M USB 3.1 dual-role module
1-16GPL-2.0-only 또는 BSD-2-Clause로 배포되는 이 스키마는 Renesas RZ/V2M과 RZ/V2MA의 USB 3.1 DRD controller를 정의합니다. 이 module은 Micro-AB receptacle의 ID pin에 따른 role swapping과 Battery Charging Specification Revision 1.2를 지원합니다. 관리자는 Biju Das입니다.
DRD resource와 bus 범위
17-63RZ/V2M은 `renesas,r9a09g011-usb3drd`, RZ/V2MA는 `renesas,r9a09g055-usb3drd`를 사용하고 둘 다 `renesas,rzv2m-usb3drd`로 fallback합니다. register 영역은 하나입니다.
interrupt 세 개는 Dual Role Device `drd`, Battery Charging `bc`, Global Purpose Input `gpi` 순서입니다. clock 두 개는 peripheral AXI `axi`와 APB register clock `reg` 순서입니다. power domain과 reset은 각각 하나이며 `ranges`를 사용할 수 있고 address/size cell 수는 1 또는 2입니다.
properties:
compatible:
items:
- enum:
- renesas,r9a09g011-usb3drd # RZ/V2M
- renesas,r9a09g055-usb3drd # RZ/V2MA
- const: renesas,rzv2m-usb3drd
reg:
maxItems: 1
interrupts:
items:
- description: Dual Role Device (DRD)
- description: Battery Charging
- description: Global Purpose Input
interrupt-names:
items:
- const: drd
- const: bc
- const: gpi
clocks:
items:
- description: Peripheral AXI clock
- description: APB clock
clock-names:
items:
- const: axi
- const: reg
power-domains:
maxItems: 1
resets:
maxItems: 1
ranges: true
'#address-cells':
enum: [ 1, 2 ]
'#size-cells':
enum: [ 1, 2 ]
peripheral·host child와 필수 속성
64-83이 DRD node는 `usb3peri@...` child를 `/schemas/usb/renesas,usb3-peri.yaml`에, `usb@...` host child를 `renesas,usb-xhci.yaml`에 맞춰 검증합니다.
필수 속성은 `compatible`, `reg`, 세 interrupt와 이름, 두 clock과 이름, `power-domains`, `resets`입니다. 정의되지 않은 추가 속성은 허용하지 않습니다.
patternProperties:
"^usb3peri@[0-9a-f]+$":
type: object
$ref: /schemas/usb/renesas,usb3-peri.yaml
"^usb@[0-9a-f]+$":
type: object
$ref: renesas,usb-xhci.yaml#
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- clock-names
- power-domains
- resets
additionalProperties: false
RZ/V2M DRD 상위 node 예제
84-104예제 `usb3drd: usb@85070400`은 0x100-byte register 영역과 GIC SPI 242, 243, 244를 `drd`, `bc`, `gpi`에 연결합니다. AXI와 APB clock, DRD reset, 빈 `ranges`, 1-cell child 주소 체계를 설정합니다.
examples:
- |
#include <dt-bindings/clock/r9a09g011-cpg.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb3drd: usb@85070400 {
compatible = "renesas,r9a09g011-usb3drd", "renesas,rzv2m-usb3drd";
reg = <0x85070400 0x100>;
interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "drd", "bc", "gpi";
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_DRD_RESET>;
ranges;
#address-cells = <1>;
#size-cells = <1>;
xHCI host와 USB3 peripheral child
105-129host child `usb3host: usb@85060000`은 RZ/V2M xHCI compatible, GIC SPI 245, host AXI와 APB clock, host reset을 사용합니다. peripheral child `usb3peri@85070000`은 RZ/V2M USB3 peripheral compatible, GIC SPI 246, peripheral AXI와 APB clock, peripheral reset을 사용합니다.
usb3host: usb@85060000 {
compatible = "renesas,r9a09g011-xhci",
"renesas,rzv2m-xhci";
reg = <0x85060000 0x2000>;
interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_H>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_H>;
};
usb3peri: usb3peri@85070000 {
compatible = "renesas,r9a09g011-usb3-peri",
"renesas,rzv2m-usb3-peri";
reg = <0x85070000 0x400>;
interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_P>;
};
};
요약과 해설
renesas,rzv2m-usb3drd.yaml:1-129RZ/V2M DRD의 role swapping, charging과 host·peripheral child 구성을 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며, compatible, register, interrupt, clock, PHY, graph endpoint, source path와 원문 줄 좌표를 원형대로 보존합니다.