← Documents Documentation/devicetree/bindings/media/mediatek-mdp.txt GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings

MediaTek MT8173 Media Data Path

Scaling·color conversion을 위한 RDMA, RSZ, WDMA, WROT block 바인딩입니다.

Source pathDocumentation/devicetree/bindings/media/mediatek-mdp.txt
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

mediatek-mdp.txt:1-96

Clock·power domain과 DMA block별 IOMMU master port를 설명합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 * Mediatek Media Data Path
2
3 Media Data Path is used for scaling and color space conversion.
4
5 Required properties (controller node):
6 - compatible: "mediatek,mt8173-mdp"
7 - mediatek,vpu: the node of video processor unit, see
8 Documentation/devicetree/bindings/media/mediatek,mt8173-vpu.yaml for
9 details.
10
11 Required properties (all function blocks, child node):
12 - compatible: Should be one of
13 "mediatek,mt8173-mdp-rdma" - read DMA
14 "mediatek,mt8173-mdp-rsz" - resizer
15 "mediatek,mt8173-mdp-wdma" - write DMA
16 "mediatek,mt8173-mdp-wrot" - write DMA with rotation
17 - reg: Physical base address and length of the function block register space
18 - clocks: device clocks, see
19 Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
20 - power-domains: a phandle to the power domain, see
21 Documentation/devicetree/bindings/power/power_domain.txt for details.
22
23 Required properties (DMA function blocks, child node):
24 - compatible: Should be one of
25 "mediatek,mt8173-mdp-rdma"
26 "mediatek,mt8173-mdp-wdma"
27 "mediatek,mt8173-mdp-wrot"
28 - iommus: should point to the respective IOMMU block with master port as
29 argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml
30 for details.
31
32 Example:
33 mdp_rdma0: rdma@14001000 {
34 compatible = "mediatek,mt8173-mdp-rdma";
35 "mediatek,mt8173-mdp";
36 reg = <0 0x14001000 0 0x1000>;
37 clocks = <&mmsys CLK_MM_MDP_RDMA0>,
38 <&mmsys CLK_MM_MUTEX_32K>;
39 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
40 iommus = <&iommu M4U_PORT_MDP_RDMA0>;
41 mediatek,vpu = <&vpu>;
42 };
43
44 mdp_rdma1: rdma@14002000 {
45 compatible = "mediatek,mt8173-mdp-rdma";
46 reg = <0 0x14002000 0 0x1000>;
47 clocks = <&mmsys CLK_MM_MDP_RDMA1>,
48 <&mmsys CLK_MM_MUTEX_32K>;
49 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
50 iommus = <&iommu M4U_PORT_MDP_RDMA1>;
51 };
52
53 mdp_rsz0: rsz@14003000 {
54 compatible = "mediatek,mt8173-mdp-rsz";
55 reg = <0 0x14003000 0 0x1000>;
56 clocks = <&mmsys CLK_MM_MDP_RSZ0>;
57 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
58 };
59
60 mdp_rsz1: rsz@14004000 {
61 compatible = "mediatek,mt8173-mdp-rsz";
62 reg = <0 0x14004000 0 0x1000>;
63 clocks = <&mmsys CLK_MM_MDP_RSZ1>;
64 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
65 };
66
67 mdp_rsz2: rsz@14005000 {
68 compatible = "mediatek,mt8173-mdp-rsz";
69 reg = <0 0x14005000 0 0x1000>;
70 clocks = <&mmsys CLK_MM_MDP_RSZ2>;
71 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
72 };
73
74 mdp_wdma0: wdma@14006000 {
75 compatible = "mediatek,mt8173-mdp-wdma";
76 reg = <0 0x14006000 0 0x1000>;
77 clocks = <&mmsys CLK_MM_MDP_WDMA>;
78 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
79 iommus = <&iommu M4U_PORT_MDP_WDMA>;
80 };
81
82 mdp_wrot0: wrot@14007000 {
83 compatible = "mediatek,mt8173-mdp-wrot";
84 reg = <0 0x14007000 0 0x1000>;
85 clocks = <&mmsys CLK_MM_MDP_WROT0>;
86 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
87 iommus = <&iommu M4U_PORT_MDP_WROT0>;
88 };
89
90 mdp_wrot1: wrot@14008000 {
91 compatible = "mediatek,mt8173-mdp-wrot";
92 reg = <0 0x14008000 0 0x1000>;
93 clocks = <&mmsys CLK_MM_MDP_WROT1>;
94 power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
95 iommus = <&iommu M4U_PORT_MDP_WROT1>;
96 };
97

3. 한국어 전문 번역

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

MediaTek Media Data Path controller

1-10

MediaTek Media Data Path(MDP)는 scaling과 color-space conversion에 사용됩니다. Controller node의 필수 `compatible`은 `mediatek,mt8173-mdp`이고 `mediatek,vpu`는 video processor unit node를 가리킵니다. VPU 상세는 `Documentation/devicetree/bindings/media/mediatek,mt8173-vpu.yaml`을 따릅니다.

MT8173 MDP 처리 흐름
RDMAMemory read
RSZScaling
MDP pipelineColor-space conversion
WDMAMemory write
WROTRotated memory write

Input DMA에서 resize와 color conversion을 거쳐 memory write 또는 rotated write로 출력합니다.

기능 block 공통 속성

11-22

모든 function-block child의 `compatible`은 read DMA의 `mediatek,mt8173-mdp-rdma`, resizer의 `mediatek,mt8173-mdp-rsz`, write DMA의 `mediatek,mt8173-mdp-wdma`, rotation 가능한 write DMA의 `mediatek,mt8173-mdp-wrot` 중 하나입니다.

각 child의 `reg`는 function block register space의 물리 base와 길이, `clocks`는 `Documentation/devicetree/bindings/clock/clock-bindings.txt`를 따르는 device clock, `power-domains`는 `Documentation/devicetree/bindings/power/power_domain.txt`를 따르는 power-domain phandle입니다.

DMA block의 IOMMU

23-31

RDMA, WDMA, WROT 같은 DMA function block에는 `iommus`가 추가로 필요합니다. 이 속성은 respective IOMMU block을 가리키고 master port를 인자로 전달하며 `Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml`을 따릅니다.

RDMA와 세 resizer 예제

32-73

예제의 RDMA0은 MDP controller compatible과 VPU phandle도 함께 가지며 RDMA0 clock, mutex 32kHz clock, MM power domain, `M4U_PORT_MDP_RDMA0` IOMMU port를 사용합니다. RDMA1은 별도 register·clock·IOMMU port를 사용합니다.

RSZ0, RSZ1, RSZ2는 각각 `0x14003000`, `0x14004000`, `0x14005000`에 있고 개별 resizer clock과 공통 MM power domain을 사용합니다. Memory DMA를 하지 않으므로 이 예제에는 `iommus`가 없습니다.

mdp_rdma0: rdma@14001000 {
        compatible = "mediatek,mt8173-mdp-rdma";
                     "mediatek,mt8173-mdp";
        reg = <0 0x14001000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_RDMA0>,
                 <&mmsys CLK_MM_MUTEX_32K>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
        iommus = <&iommu M4U_PORT_MDP_RDMA0>;
        mediatek,vpu = <&vpu>;
};

mdp_rdma1: rdma@14002000 {
        compatible = "mediatek,mt8173-mdp-rdma";
        reg = <0 0x14002000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_RDMA1>,
                 <&mmsys CLK_MM_MUTEX_32K>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
        iommus = <&iommu M4U_PORT_MDP_RDMA1>;
};

mdp_rsz0: rsz@14003000 {
        compatible = "mediatek,mt8173-mdp-rsz";
        reg = <0 0x14003000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_RSZ0>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
};

mdp_rsz1: rsz@14004000 {
        compatible = "mediatek,mt8173-mdp-rsz";
        reg = <0 0x14004000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_RSZ1>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
};

mdp_rsz2: rsz@14005000 {
        compatible = "mediatek,mt8173-mdp-rsz";
        reg = <0 0x14005000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_RSZ2>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
};

WDMA와 두 WROT 예제

74-96

WDMA0은 `M4U_PORT_MDP_WDMA`, WROT0과 WROT1은 각각 `M4U_PORT_MDP_WROT0`, `M4U_PORT_MDP_WROT1` IOMMU master port를 사용합니다. 세 block 모두 MM power domain과 자신의 device clock을 선언합니다.

mdp_wdma0: wdma@14006000 {
        compatible = "mediatek,mt8173-mdp-wdma";
        reg = <0 0x14006000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_WDMA>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
        iommus = <&iommu M4U_PORT_MDP_WDMA>;
};

mdp_wrot0: wrot@14007000 {
        compatible = "mediatek,mt8173-mdp-wrot";
        reg = <0 0x14007000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_WROT0>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
        iommus = <&iommu M4U_PORT_MDP_WROT0>;
};

mdp_wrot1: wrot@14008000 {
        compatible = "mediatek,mt8173-mdp-wrot";
        reg = <0 0x14008000 0 0x1000>;
        clocks = <&mmsys CLK_MM_MDP_WROT1>;
        power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
        iommus = <&iommu M4U_PORT_MDP_WROT1>;
};