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 이름, 코드 심벌, 소스 경로는 원문 표기를 유지합니다.

1. 요약·해설

원문의 핵심 내용을 정리하고 커널 프로그래밍에 필요한 설명을 덧붙였습니다. 아래의 전체 번역과는 별도로 작성한 해설입니다.

요약과 해설

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. 한국어 전문 번역

영어 원문의 문단 순서와 의미에 맞춰 전체 내용을 번역했습니다. 코드, 함수명, 코드 심벌, 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>;
};