← Documents Documentation/devicetree/bindings/powerpc/4xx/ppc440spe-adma.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

PPC440SPe DMA/XOR

PPC440SPe ADMA용 I2O·DMA·XOR·Memory Queue node binding입니다.

Source pathDocumentation/devicetree/bindings/powerpc/4xx/ppc440spe-adma.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

ppc440spe-adma.txt:1-91

RAID-6 hardware 구성과 네 engine node의 resource를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 PPC440SPe DMA/XOR (DMA Controller and XOR Accelerator)
2
3 Device nodes needed for operation of the ppc440spe-adma driver
4 are specified hereby. These are I2O/DMA, DMA and XOR nodes
5 for DMA engines and Memory Queue Module node. The latter is used
6 by ADMA driver for configuration of RAID-6 H/W capabilities of
7 the PPC440SPe. In addition to the nodes and properties described
8 below, the ranges property of PLB node must specify ranges for
9 DMA devices.
10
11 i) The I2O node
12
13 Required properties:
14
15 - compatible : "ibm,i2o-440spe";
16 - reg : <registers mapping>
17 - dcr-reg : <DCR registers range>
18
19 Example:
20
21 I2O: i2o@400100000 {
22 compatible = "ibm,i2o-440spe";
23 reg = <0x00000004 0x00100000 0x100>;
24 dcr-reg = <0x060 0x020>;
25 };
26
27
28 ii) The DMA node
29
30 Required properties:
31
32 - compatible : "ibm,dma-440spe";
33 - cell-index : 1 cell, hardware index of the DMA engine
34 (typically 0x0 and 0x1 for DMA0 and DMA1)
35 - reg : <registers mapping>
36 - dcr-reg : <DCR registers range>
37 - interrupts : <interrupt mapping for DMA0/1 interrupts sources:
38 2 sources: DMAx CS FIFO Needs Service IRQ (on UIC0)
39 and DMA Error IRQ (on UIC1). The latter is common
40 for both DMA engines>.
41
42 Example:
43
44 DMA0: dma0@400100100 {
45 compatible = "ibm,dma-440spe";
46 cell-index = <0>;
47 reg = <0x00000004 0x00100100 0x100>;
48 dcr-reg = <0x060 0x020>;
49 interrupt-parent = <&DMA0>;
50 interrupts = <0 1>;
51 #interrupt-cells = <1>;
52 #address-cells = <0>;
53 #size-cells = <0>;
54 interrupt-map = <
55 0 &UIC0 0x14 4
56 1 &UIC1 0x16 4>;
57 };
58
59
60 iii) XOR Accelerator node
61
62 Required properties:
63
64 - compatible : "amcc,xor-accelerator";
65 - reg : <registers mapping>
66 - interrupts : <interrupt mapping for XOR interrupt source>
67
68 Example:
69
70 xor-accel@400200000 {
71 compatible = "amcc,xor-accelerator";
72 reg = <0x00000004 0x00200000 0x400>;
73 interrupt-parent = <&UIC1>;
74 interrupts = <0x1f 4>;
75 };
76
77
78 iv) Memory Queue Module node
79
80 Required properties:
81
82 - compatible : "ibm,mq-440spe";
83 - dcr-reg : <DCR registers range>
84
85 Example:
86
87 MQ0: mq {
88 compatible = "ibm,mq-440spe";
89 dcr-reg = <0x040 0x020>;
90 };
91
92

3. 한국어 전문 번역

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

PPC440SPe DMA/XOR 구성

1-10

`ppc440spe-adma` driver에는 DMA engine용 I2O/DMA node와 DMA node, XOR accelerator node, Memory Queue Module node가 필요합니다. Memory Queue Module은 PPC440SPe의 RAID-6 hardware capability를 구성할 때 ADMA driver가 사용합니다.

아래 node와 property 외에도 PLB node의 `ranges` property가 DMA device의 range를 지정해야 합니다.

I2O node

11-27

I2O node의 필수 `compatible`은 `ibm,i2o-440spe`, `reg`는 register mapping, `dcr-reg`는 DCR register range입니다.

I2O: i2o@400100000 {
        compatible = "ibm,i2o-440spe";
        reg = <0x00000004 0x00100000 0x100>;
        dcr-reg = <0x060 0x020>;
};

DMA engine node

28-59

DMA node의 필수 `compatible`은 `ibm,dma-440spe`입니다. `cell-index`는 DMA engine의 1cell hardware index이며 보통 DMA0과 DMA1에 각각 0x0과 0x1을 사용합니다. `reg`와 `dcr-reg`는 일반 register 및 DCR range입니다.

`interrupts`는 DMA0/1 interrupt source mapping입니다. Source는 UIC0의 `DMAx CS FIFO Needs Service IRQ`와 UIC1의 `DMA Error IRQ` 두 개이며 error IRQ는 두 DMA engine이 공유합니다.

예제 DMA0 node는 자신을 interrupt parent로 두고 local interrupt 0을 UIC0 source 0x14, local interrupt 1을 UIC1 source 0x16에 map합니다.

DMA0: dma0@400100100 {
        compatible = "ibm,dma-440spe";
        cell-index = <0>;
        reg = <0x00000004 0x00100100 0x100>;
        dcr-reg = <0x060 0x020>;
        interrupt-parent = <&DMA0>;
        interrupts = <0 1>;
        #interrupt-cells = <1>;
        #address-cells = <0>;
        #size-cells = <0>;
        interrupt-map = <
                0 &UIC0 0x14 4
                1 &UIC1 0x16 4>;
};

XOR accelerator node

60-77

XOR accelerator의 필수 `compatible`은 `amcc,xor-accelerator`, `reg`는 register mapping, `interrupts`는 XOR interrupt source mapping입니다. 예제는 UIC1 source 0x1f를 사용합니다.

xor-accel@400200000 {
        compatible = "amcc,xor-accelerator";
        reg = <0x00000004 0x00200000 0x400>;
        interrupt-parent = <&UIC1>;
        interrupts = <0x1f 4>;
};

Memory Queue Module node

78-91

Memory Queue Module의 필수 `compatible`은 `ibm,mq-440spe`이고 `dcr-reg`는 DCR register range입니다.

MQ0: mq {
        compatible = "ibm,mq-440spe";
        dcr-reg = <0x040 0x020>;
};