요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
Message unit node:
For SRIO controllers that implement the message unit as part of the controller
this node is required. For devices with RMAN this node should NOT exist. The
node is composed of three types of sub-nodes ("fsl-srio-msg-unit",
"fsl-srio-dbell-unit" and "fsl-srio-port-write-unit").
See srio.txt for more details about generic SRIO controller details.
- compatible
Usage: required
Value type: <string>
Definition: Must include "fsl,srio-rmu-vX.Y", "fsl,srio-rmu".
The version X.Y should match the general SRIO controller's IP Block
revision register's Major(X) and Minor (Y) value.
- reg
Usage: required
Value type: <prop-encoded-array>
Definition: A standard property. Specifies the physical address and
length of the SRIO configuration registers for message units
and doorbell units.
- fsl,liodn
Usage: optional-but-recommended (for devices with PAMU)
Value type: <prop-encoded-array>
Definition: The logical I/O device number for the PAMU (IOMMU) to be
correctly configured for SRIO accesses. The property should
not exist on devices that do not support PAMU.
The LIODN value is associated with all RMU transactions
(msg-unit, doorbell, port-write).
Sub-Nodes for RMU: The RMU node is composed of multiple sub-nodes that
correspond to the actual sub-controllers in the RMU. The manual for a given
SoC will detail which and how many of these sub-controllers are implemented.
Message Unit:
- compatible
Usage: required
Value type: <string>
Definition: Must include "fsl,srio-msg-unit-vX.Y", "fsl,srio-msg-unit".
The version X.Y should match the general SRIO controller's IP Block
revision register's Major(X) and Minor (Y) value.
- reg
Usage: required
Value type: <prop-encoded-array>
Definition: A standard property. Specifies the physical address and
length of the SRIO configuration registers for message units
and doorbell units.
- interrupts
Usage: required
Value type: <prop_encoded-array>
Definition: Specifies the interrupts generated by this device. The
value of the interrupts property consists of one interrupt
specifier. The format of the specifier is defined by the
binding document describing the node's interrupt parent.
A pair of IRQs are specified in this property. The first
element is associated with the transmit (TX) interrupt and the
second element is associated with the receive (RX) interrupt.
Doorbell Unit:
- compatible
Usage: required
Value type: <string>
Definition: Must include:
"fsl,srio-dbell-unit-vX.Y", "fsl,srio-dbell-unit"
The version X.Y should match the general SRIO controller's IP Block
revision register's Major(X) and Minor (Y) value.
- reg
Usage: required
Value type: <prop-encoded-array>
Definition: A standard property. Specifies the physical address and
length of the SRIO configuration registers for message units
and doorbell units.
- interrupts
Usage: required
Value type: <prop_encoded-array>
Definition: Specifies the interrupts generated by this device. The
value of the interrupts property consists of one interrupt
specifier. The format of the specifier is defined by the
binding document describing the node's interrupt parent.
A pair of IRQs are specified in this property. The first
element is associated with the transmit (TX) interrupt and the
second element is associated with the receive (RX) interrupt.
Port-Write Unit:
- compatible
Usage: required
Value type: <string>
Definition: Must include:
"fsl,srio-port-write-unit-vX.Y", "fsl,srio-port-write-unit"
The version X.Y should match the general SRIO controller's IP Block
revision register's Major(X) and Minor (Y) value.
- reg
Usage: required
Value type: <prop-encoded-array>
Definition: A standard property. Specifies the physical address and
length of the SRIO configuration registers for message units
and doorbell units.
- interrupts
Usage: required
Value type: <prop_encoded-array>
Definition: Specifies the interrupts generated by this device. The
value of the interrupts property consists of one interrupt
specifier. The format of the specifier is defined by the
binding document describing the node's interrupt parent.
A single IRQ that handles port-write conditions is
specified by this property. (Typically shared with error).
Note: All other standard properties (see the Devicetree Specification)
are allowed but are optional.
Example:
rmu: rmu@d3000 {
compatible = "fsl,srio-rmu";
reg = <0xd3000 0x400>;
ranges = <0x0 0xd3000 0x400>;
fsl,liodn = <0xc8>;
message-unit@0 {
compatible = "fsl,srio-msg-unit";
reg = <0x0 0x100>;
interrupts = <
60 2 0 0 /* msg1_tx_irq */
61 2 0 0>;/* msg1_rx_irq */
};
message-unit@100 {
compatible = "fsl,srio-msg-unit";
reg = <0x100 0x100>;
interrupts = <
62 2 0 0 /* msg2_tx_irq */
63 2 0 0>;/* msg2_rx_irq */
};
doorbell-unit@400 {
compatible = "fsl,srio-dbell-unit";
reg = <0x400 0x80>;
interrupts = <
56 2 0 0 /* bell_outb_irq */
57 2 0 0>;/* bell_inb_irq */
};
port-write-unit@4e0 {
compatible = "fsl,srio-port-write-unit";
reg = <0x4e0 0x20>;
interrupts = <16 2 1 11>;
};
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
RMU node
1-34Message unit을 controller 일부로 구현한 SRIO controller에는 이 node가 필요합니다. RMAN이 있는 device에는 이 node가 없어야 합니다. Node는 `fsl-srio-msg-unit`, `fsl-srio-dbell-unit`, `fsl-srio-port-write-unit` 세 종류 sub-node로 구성됩니다. 일반 SRIO controller 내용은 `srio.txt`를 참조합니다.
필수 `compatible`에는 `fsl,srio-rmu-vX.Y`와 `fsl,srio-rmu`가 들어가며 X.Y는 일반 SRIO controller IP Block revision register의 Major(X)·Minor(Y) 값과 일치해야 합니다.
필수 `reg`는 message unit과 doorbell unit용 SRIO configuration register의 physical address와 length를 지정합니다. PAMU가 있는 device에는 선택 권장 `fsl,liodn`을 두어 SRIO access용 PAMU(IOMMU)를 올바르게 설정합니다. PAMU 미지원 device에는 이 property가 없어야 하며 LIODN은 message, doorbell, port-write를 포함한 모든 RMU transaction에 연결됩니다.
Message Unit
35-67RMU node에는 SoC가 실제 구현한 sub-controller 수와 종류에 따라 여러 sub-node가 있습니다. Message Unit의 필수 `compatible`은 `fsl,srio-msg-unit-vX.Y`, `fsl,srio-msg-unit`이며 version은 일반 SRIO controller revision과 일치해야 합니다.
필수 `reg`는 message·doorbell unit configuration register의 physical address와 length를 지정합니다. 필수 `interrupts` 형식은 interrupt parent binding이 정하며, 첫 IRQ는 transmit(TX), 두 번째 IRQ는 receive(RX)에 대응합니다.
Doorbell Unit
68-97Doorbell Unit의 필수 `compatible`은 `fsl,srio-dbell-unit-vX.Y`, `fsl,srio-dbell-unit`이며 X.Y는 SRIO controller IP revision의 Major·Minor 값입니다.
필수 `reg`는 configuration register의 physical address와 length를 지정합니다. 필수 `interrupts`의 첫 IRQ는 transmit(TX), 두 번째 IRQ는 receive(RX)에 대응하며 specifier 형식은 interrupt parent binding을 따릅니다.
Port-Write Unit
98-129Port-Write Unit의 필수 `compatible`은 `fsl,srio-port-write-unit-vX.Y`, `fsl,srio-port-write-unit`이며 version은 일반 SRIO controller revision과 일치해야 합니다.
필수 `reg`는 configuration register의 physical address와 length를 지정합니다. 필수 `interrupts`는 port-write condition을 처리하는 단일 IRQ이며 보통 error IRQ와 공유합니다. Devicetree Specification의 다른 표준 property도 허용되지만 선택 사항입니다.
RMU 예제
130-163예제는 LIODN 0xc8의 RMU 아래에 message unit 두 개, doorbell unit 하나와 port-write unit 하나를 배치합니다. Message와 doorbell은 TX·RX IRQ 쌍을, port-write는 error와 공유하는 단일 IRQ를 사용합니다.
rmu: rmu@d3000 {
compatible = "fsl,srio-rmu";
reg = <0xd3000 0x400>;
ranges = <0x0 0xd3000 0x400>;
fsl,liodn = <0xc8>;
message-unit@0 {
compatible = "fsl,srio-msg-unit";
reg = <0x0 0x100>;
interrupts = <
60 2 0 0 /* msg1_tx_irq */
61 2 0 0>;/* msg1_rx_irq */
};
message-unit@100 {
compatible = "fsl,srio-msg-unit";
reg = <0x100 0x100>;
interrupts = <
62 2 0 0 /* msg2_tx_irq */
63 2 0 0>;/* msg2_rx_irq */
};
doorbell-unit@400 {
compatible = "fsl,srio-dbell-unit";
reg = <0x400 0x80>;
interrupts = <
56 2 0 0 /* bell_outb_irq */
57 2 0 0>;/* bell_inb_irq */
};
port-write-unit@4e0 {
compatible = "fsl,srio-port-write-unit";
reg = <0x4e0 0x20>;
interrupts = <16 2 1 11>;
};
};
요약과 해설
srio-rmu.txt:1-163RMAN 유무에 따른 RMU node 조건과 세 sub-controller의 version·TX/RX·port-write interrupt 계약을 정리합니다.