← Documents Documentation/devicetree/bindings/powerpc/fsl/raideng.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Freescale 85xx RAID Engine

P5020·P5040 RAID accelerator의 engine, job queue와 job ring binding입니다.

Source pathDocumentation/devicetree/bindings/powerpc/fsl/raideng.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

raideng.txt:1-81

RAID engine→job queue→priority별 job ring 계층과 IRQ·LIODN을 P5020 예제로 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 * Freescale 85xx RAID Engine nodes
2
3 RAID Engine nodes are defined to describe on-chip RAID accelerators. Each RAID
4 Engine should have a separate node.
5
6 Supported chips:
7 P5020, P5040
8
9 Required properties:
10
11 - compatible: Should contain "fsl,raideng-v1.0" as the value
12 This identifies RAID Engine block. 1 in 1.0 represents
13 major number whereas 0 represents minor number. The
14 version matches the hardware IP version.
15 - reg: offset and length of the register set for the device
16 - ranges: standard ranges property specifying the translation
17 between child address space and parent address space
18
19 Example:
20 /* P5020 */
21 raideng: raideng@320000 {
22 compatible = "fsl,raideng-v1.0";
23 #address-cells = <1>;
24 #size-cells = <1>;
25 reg = <0x320000 0x10000>;
26 ranges = <0 0x320000 0x10000>;
27 };
28
29
30 There must be a sub-node for each job queue present in RAID Engine
31 This node must be a sub-node of the main RAID Engine node
32
33 - compatible: Should contain "fsl,raideng-v1.0-job-queue" as the value
34 This identifies the job queue interface
35 - reg: offset and length of the register set for job queue
36 - ranges: standard ranges property specifying the translation
37 between child address space and parent address space
38
39 Example:
40 /* P5020 */
41 raideng_jq0@1000 {
42 compatible = "fsl,raideng-v1.0-job-queue";
43 reg = <0x1000 0x1000>;
44 ranges = <0x0 0x1000 0x1000>;
45 };
46
47
48 There must be a sub-node for each job ring present in RAID Engine
49 This node must be a sub-node of job queue node
50
51 - compatible: Must contain "fsl,raideng-v1.0-job-ring" as the value
52 This identifies job ring. Should contain either
53 "fsl,raideng-v1.0-hp-ring" or "fsl,raideng-v1.0-lp-ring"
54 depending upon whether ring has high or low priority
55 - reg: offset and length of the register set for job ring
56 - interrupts: interrupt mapping for job ring IRQ
57
58 Optional property:
59
60 - fsl,liodn: Specifies the LIODN to be used for Job Ring. This
61 property is normally set by firmware. Value
62 is of 12-bits which is the LIODN number for this JR.
63 This property is used by the IOMMU (PAMU) to distinguish
64 transactions from this JR and than be able to do address
65 translation & protection accordingly.
66
67 Example:
68 /* P5020 */
69 raideng_jq0@1000 {
70 compatible = "fsl,raideng-v1.0-job-queue";
71 reg = <0x1000 0x1000>;
72 ranges = <0x0 0x1000 0x1000>;
73
74 raideng_jr0: jr@0 {
75 compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring";
76 reg = <0x0 0x400>;
77 interrupts = <139 2 0 0>;
78 interrupt-parent = <&mpic>;
79 fsl,liodn = <0x41>;
80 };
81 };
82

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

RAID Engine node

1-18

Freescale 85xx RAID Engine node는 on-chip RAID accelerator를 기술하며 각 RAID Engine마다 별도 node가 있어야 합니다. 지원 chip은 P5020과 P5040입니다.

필수 `compatible`은 `fsl,raideng-v1.0`이며 RAID Engine block의 hardware IP version을 나타냅니다. 1은 major number, 0은 minor number입니다.

필수 `reg`는 device register set의 offset과 length를 지정합니다. 필수 표준 `ranges`는 child address 공간과 parent address 공간 사이의 translation을 지정합니다.

P5020 RAID Engine 예제

19-29

P5020 예제는 0x320000에 0x10000-byte RAID Engine register와 동일 범위의 child-address translation을 선언합니다.

/* P5020 */
raideng: raideng@320000 {
        compatible = "fsl,raideng-v1.0";
        #address-cells = <1>;
        #size-cells = <1>;
        reg        = <0x320000 0x10000>;
        ranges        = <0 0x320000 0x10000>;
};

Job queue node

30-38

RAID Engine에 존재하는 각 job queue마다 main RAID Engine node 아래에 sub-node가 있어야 합니다.

필수 `compatible`은 job queue interface를 식별하는 `fsl,raideng-v1.0-job-queue`입니다. 필수 `reg`는 job queue register set의 offset과 length를, 필수 표준 `ranges`는 child와 parent address 공간 사이의 translation을 지정합니다.

P5020 job queue 예제

39-47

P5020 job queue 예제는 engine 내부 offset 0x1000에 0x1000-byte register set과 일치하는 child range를 선언합니다.

/* P5020 */
raideng_jq0@1000 {
        compatible = "fsl,raideng-v1.0-job-queue";
        reg           = <0x1000 0x1000>;
        ranges           = <0x0 0x1000 0x1000>;
};

Job ring node

48-66

RAID Engine에 존재하는 각 job ring마다 job queue node 아래에 sub-node가 있어야 합니다.

필수 `compatible`에는 `fsl,raideng-v1.0-job-ring`과 함께 ring 우선순위에 따라 `fsl,raideng-v1.0-hp-ring` 또는 `fsl,raideng-v1.0-lp-ring`이 들어가야 합니다. 필수 `reg`는 job ring register set의 offset과 length이고 `interrupts`는 job ring IRQ mapping입니다.

선택 `fsl,liodn`은 job ring에 사용할 12-bit LIODN 번호이며 보통 firmware가 설정합니다. IOMMU(PAMU)는 이 값으로 해당 job ring의 transaction을 구분해 address translation과 protection을 적용합니다.

High-priority job ring 예제

67-81

예제는 job queue 안에 high-priority ring을 두고 0x400-byte register set, MPIC interrupt 139와 LIODN 0x41을 지정합니다.

/* P5020 */
raideng_jq0@1000 {
        compatible = "fsl,raideng-v1.0-job-queue";
        reg           = <0x1000 0x1000>;
        ranges           = <0x0 0x1000 0x1000>;

        raideng_jr0: jr@0 {
                compatible = "fsl,raideng-v1.0-job-ring", "fsl,raideng-v1.0-hp-ring";
                reg           = <0x0 0x400>;
                interrupts = <139 2 0 0>;
                interrupt-parent = <&mpic>;
                fsl,liodn = <0x41>;
        };
};