요약·해설, 영어 원문, 전체 번역을 구분해 실었습니다. API 이름, 코드 심벌, 소스 경로는 원문 표기를 유지합니다.
1. 요약·해설
원문의 핵심 내용을 정리하고 커널 프로그래밍에 필요한 설명을 덧붙였습니다. 아래의 전체 번역과는 별도로 작성한 해설입니다.
2. 영어 원문 전체
번역에 사용한 Linux v6.18.37 원문입니다. 줄 번호는 해당 버전의 소스 파일을 기준으로 합니다.
원문 전체 펼치기
Lantiq XWAY SoC RCU binding
===========================
This binding describes the RCU (reset controller unit) multifunction device,
where each sub-device has its own set of registers.
The RCU register range is used for multiple purposes. Mostly one device
uses one or multiple register exclusively, but for some registers some
bits are for one driver and some other bits are for a different driver.
With this patch all accesses to the RCU registers will go through
syscon.
-------------------------------------------------------------------------------
Required properties:
- compatible : The first and second values must be:
"lantiq,xrx200-rcu", "simple-mfd", "syscon"
- reg : The address and length of the system control registers
-------------------------------------------------------------------------------
Example of the RCU bindings on a xRX200 SoC:
rcu0: rcu@203000 {
compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
reg = <0x203000 0x100>;
ranges = <0x0 0x203000 0x100>;
big-endian;
reset0: reset-controller@10 {
compatible = "lantiq,xrx200-reset";
reg = <0x10 4>, <0x14 4>;
#reset-cells = <2>;
};
reset1: reset-controller@48 {
compatible = "lantiq,xrx200-reset";
reg = <0x48 4>, <0x24 4>;
#reset-cells = <2>;
};
usb_phy0: usb2-phy@18 {
compatible = "lantiq,xrx200-usb2-phy";
reg = <0x18 4>, <0x38 4>;
resets = <&reset1 4 4>, <&reset0 4 4>;
reset-names = "phy", "ctrl";
#phy-cells = <0>;
};
usb_phy1: usb2-phy@34 {
compatible = "lantiq,xrx200-usb2-phy";
reg = <0x34 4>, <0x3C 4>;
resets = <&reset1 5 4>, <&reset0 4 4>;
reset-names = "phy", "ctrl";
#phy-cells = <0>;
};
reboot@10 {
compatible = "syscon-reboot";
reg = <0x10 4>;
regmap = <&rcu0>;
offset = <0x10>;
mask = <0x40000000>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미에 맞춰 전체 내용을 번역했습니다. 코드, 함수명, 코드 심벌, URL은 원문 표기를 유지합니다.
Lantiq XWAY RCU multifunction device
1-13이 바인딩은 RCU(reset controller unit) 다기능 장치를 설명하며 각 sub-device는 자체 register 집합을 가집니다.
RCU register 범위는 여러 목적으로 사용됩니다. 보통 한 장치가 register 하나 이상을 독점하지만 일부 register는 서로 다른 bit를 서로 다른 driver가 사용합니다. 모든 RCU register 접근은 `syscon`을 통과합니다.
공통 syscon regmap 아래에서 reset, USB PHY, reboot 기능이 서로 다른 register 또는 bit를 사용합니다.
RCU 호환성과 system-control 범위
14-20`compatible`의 첫 값과 둘째 값은 원문 표현에 따라 `lantiq,xrx200-rcu`, `simple-mfd`, `syscon`을 사용합니다. 실제 목록은 세 문자열이며 `reg`는 system control register의 주소와 길이입니다.
SoC별 기능, MFD 자식 열거, 공통 regmap 역할을 함께 선언합니다.
Reset·USB PHY·reboot 예제
21-69XRX200 예제는 `0x203000`의 256-byte big-endian RCU 범위를 직접 매핑합니다. 두 reset controller는 각각 register pair `0x10/0x14`, `0x48/0x24`와 두 cell reset specifier를 제공합니다.
USB PHY0은 register `0x18/0x38`, PHY1은 `0x34/0x3c`를 사용하고 각각 `phy`, `ctrl` reset을 연결합니다. `syscon-reboot` 자식은 RCU regmap offset `0x10`의 mask `0x40000000`을 사용합니다.
rcu0: rcu@203000 {
compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
reg = <0x203000 0x100>;
ranges = <0x0 0x203000 0x100>;
big-endian;
reset0: reset-controller@10 {
compatible = "lantiq,xrx200-reset";
reg = <0x10 4>, <0x14 4>;
#reset-cells = <2>;
};
reset1: reset-controller@48 {
compatible = "lantiq,xrx200-reset";
reg = <0x48 4>, <0x24 4>;
#reset-cells = <2>;
};
usb_phy0: usb2-phy@18 {
compatible = "lantiq,xrx200-usb2-phy";
reg = <0x18 4>, <0x38 4>;
resets = <&reset1 4 4>, <&reset0 4 4>;
reset-names = "phy", "ctrl";
#phy-cells = <0>;
};
usb_phy1: usb2-phy@34 {
compatible = "lantiq,xrx200-usb2-phy";
reg = <0x34 4>, <0x3C 4>;
resets = <&reset1 5 4>, <&reset0 4 4>;
reset-names = "phy", "ctrl";
#phy-cells = <0>;
};
reboot@10 {
compatible = "syscon-reboot";
reg = <0x10 4>;
regmap = <&rcu0>;
offset = <0x10>;
mask = <0x40000000>;
};
};
요약과 해설
rcu.txt:1-69Shared register bit, 두 reset controller와 PHY reset 관계를 설명합니다.