요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
* Mediatek Media Data Path
Media Data Path is used for scaling and color space conversion.
Required properties (controller node):
- compatible: "mediatek,mt8173-mdp"
- mediatek,vpu: the node of video processor unit, see
Documentation/devicetree/bindings/media/mediatek,mt8173-vpu.yaml for
details.
Required properties (all function blocks, child node):
- compatible: Should be one of
"mediatek,mt8173-mdp-rdma" - read DMA
"mediatek,mt8173-mdp-rsz" - resizer
"mediatek,mt8173-mdp-wdma" - write DMA
"mediatek,mt8173-mdp-wrot" - write DMA with rotation
- reg: Physical base address and length of the function block register space
- clocks: device clocks, see
Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
- power-domains: a phandle to the power domain, see
Documentation/devicetree/bindings/power/power_domain.txt for details.
Required properties (DMA function blocks, child node):
- compatible: Should be one of
"mediatek,mt8173-mdp-rdma"
"mediatek,mt8173-mdp-wdma"
"mediatek,mt8173-mdp-wrot"
- iommus: should point to the respective IOMMU block with master port as
argument, see Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml
for details.
Example:
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>;
};
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>;
};
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
MediaTek Media Data Path controller
1-10MediaTek 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`을 따릅니다.
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-31RDMA, 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-96WDMA0은 `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>;
};
요약과 해설
mediatek-mdp.txt:1-96Clock·power domain과 DMA block별 IOMMU master port를 설명합니다.