← Documents Documentation/devicetree/bindings/dma/apm-xgene-dma.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

Applied Micro X-Gene DMA

X-Gene DMA의 descriptor register, 다섯 interrupt와 clock 바인딩입니다.

Source pathDocumentation/devicetree/bindings/dma/apm-xgene-dma.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

apm-xgene-dma.txt:1-47

Register/interrupt 순서와 coherent DMA 예제를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 Applied Micro X-Gene SoC DMA nodes
2
3 DMA nodes are defined to describe on-chip DMA interfaces in
4 APM X-Gene SoC.
5
6 Required properties for DMA interfaces:
7 - compatible: Should be "apm,xgene-dma".
8 - device_type: set to "dma".
9 - reg: Address and length of the register set for the device.
10 It contains the information of registers in the following order:
11 1st - DMA control and status register address space.
12 2nd - Descriptor ring control and status register address space.
13 3rd - Descriptor ring command register address space.
14 4th - Soc efuse register address space.
15 - interrupts: DMA has 5 interrupts sources. 1st interrupt is
16 DMA error reporting interrupt. 2nd, 3rd, 4th and 5th interrupts
17 are completion interrupts for each DMA channels.
18 - clocks: Reference to the clock entry.
19
20 Optional properties:
21 - dma-coherent : Present if dma operations are coherent
22
23 Example:
24 dmaclk: dmaclk@1f27c000 {
25 compatible = "apm,xgene-device-clock";
26 #clock-cells = <1>;
27 clocks = <&socplldiv2 0>;
28 reg = <0x0 0x1f27c000 0x0 0x1000>;
29 reg-names = "csr-reg";
30 clock-output-names = "dmaclk";
31 };
32
33 dma: dma@1f270000 {
34 compatible = "apm,xgene-storm-dma";
35 device_type = "dma";
36 reg = <0x0 0x1f270000 0x0 0x10000>,
37 <0x0 0x1f200000 0x0 0x10000>,
38 <0x0 0x1b000000 0x0 0x400000>,
39 <0x0 0x1054a000 0x0 0x100>;
40 interrupts = <0x0 0x82 0x4>,
41 <0x0 0xb8 0x4>,
42 <0x0 0xb9 0x4>,
43 <0x0 0xba 0x4>,
44 <0x0 0xbb 0x4>;
45 dma-coherent;
46 clocks = <&dmaclk 0>;
47 };
48

3. 한국어 전문 번역

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

X-Gene DMA 자원

1-22

Applied Micro X-Gene SoC의 on-chip DMA interface를 설명하는 node 바인딩입니다. 필수 `compatible`은 `apm,xgene-dma`, `device_type`은 `dma`, `reg`는 device register set의 address와 length입니다.

`reg`의 네 영역은 순서대로 DMA control/status, descriptor ring control/status, descriptor ring command, SoC efuse register address space입니다.

DMA에는 interrupt source가 다섯 개 있습니다. 첫 interrupt는 DMA error reporting, 두 번째부터 다섯 번째는 각 DMA channel의 completion interrupt입니다. `clocks`는 clock entry 참조입니다. 선택 `dma-coherent`는 DMA operation이 coherent할 때 둡니다.

X-Gene DMA register와 interrupt 순서
Indexreginterrupts
1DMA control/statusDMA error
2Descriptor ring control/statusChannel 0 completion
3Descriptor ring commandChannel 1 completion
4SoC efuseChannel 2 completion
5-Channel 3 completion

Device Tree array의 positional 의미를 정리합니다.

X-Gene descriptor DMA
dmaclkDMA reference clock
DMA control/statusEngine state
Descriptor ringCommands and status
Four DMA channelsCompletion IRQ each

Reference clock과 descriptor ring register가 네 channel의 transfer와 completion을 제어합니다.

X-Gene clock과 DMA 예제

23-47

예제는 X-Gene device clock node와 DMA node를 함께 정의합니다. DMA에는 네 register 영역, error/completion interrupt 다섯 개, coherent DMA와 clock이 연결됩니다. 속성 설명의 `apm,xgene-dma`와 달리 예제 compatible은 `apm,xgene-storm-dma`이므로 원문 그대로 보존합니다.

dmaclk: dmaclk@1f27c000 {
        compatible = "apm,xgene-device-clock";
        #clock-cells = <1>;
        clocks = <&socplldiv2 0>;
        reg = <0x0 0x1f27c000 0x0 0x1000>;
        reg-names = "csr-reg";
        clock-output-names = "dmaclk";
};

dma: dma@1f270000 {
                compatible = "apm,xgene-storm-dma";
                device_type = "dma";
                reg = <0x0 0x1f270000 0x0 0x10000>,
                      <0x0 0x1f200000 0x0 0x10000>,
                      <0x0 0x1b000000 0x0 0x400000>,
                      <0x0 0x1054a000 0x0 0x100>;
                interrupts = <0x0 0x82 0x4>,
                             <0x0 0xb8 0x4>,
                             <0x0 0xb9 0x4>,
                             <0x0 0xba 0x4>,
                             <0x0 0xbb 0x4>;
                dma-coherent;
                clocks = <&dmaclk 0>;
};