18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/iommu/samsung,sysmmu.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: Samsung Exynos IOMMU H/W, System MMU (System Memory Management Unit) 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Marek Szyprowski <m.szyprowski@samsung.com> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cidescription: |+ 138c2ecf20Sopenharmony_ci Samsung's Exynos architecture contains System MMUs that enables scattered 148c2ecf20Sopenharmony_ci physical memory chunks visible as a contiguous region to DMA-capable peripheral 158c2ecf20Sopenharmony_ci devices like MFC, FIMC, FIMD, GScaler, FIMC-IS and so forth. 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci System MMU is an IOMMU and supports identical translation table format to 188c2ecf20Sopenharmony_ci ARMv7 translation tables with minimum set of page properties including access 198c2ecf20Sopenharmony_ci permissions, shareability and security protection. In addition, System MMU has 208c2ecf20Sopenharmony_ci another capabilities like L2 TLB or block-fetch buffers to minimize translation 218c2ecf20Sopenharmony_ci latency. 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci System MMUs are in many to one relation with peripheral devices, i.e. single 248c2ecf20Sopenharmony_ci peripheral device might have multiple System MMUs (usually one for each bus 258c2ecf20Sopenharmony_ci master), but one System MMU can handle transactions from only one peripheral 268c2ecf20Sopenharmony_ci device. The relation between a System MMU and the peripheral device needs to be 278c2ecf20Sopenharmony_ci defined in device node of the peripheral device. 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci MFC in all Exynos SoCs and FIMD, M2M Scalers and G2D in Exynos5420 has 2 System 308c2ecf20Sopenharmony_ci MMUs. 318c2ecf20Sopenharmony_ci * MFC has one System MMU on its left and right bus. 328c2ecf20Sopenharmony_ci * FIMD in Exynos5420 has one System MMU for window 0 and 4, the other system MMU 338c2ecf20Sopenharmony_ci for window 1, 2 and 3. 348c2ecf20Sopenharmony_ci * M2M Scalers and G2D in Exynos5420 has one System MMU on the read channel and 358c2ecf20Sopenharmony_ci the other System MMU on the write channel. 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci For information on assigning System MMU controller to its peripheral devices, 388c2ecf20Sopenharmony_ci see generic IOMMU bindings. 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciproperties: 418c2ecf20Sopenharmony_ci compatible: 428c2ecf20Sopenharmony_ci const: samsung,exynos-sysmmu 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci reg: 458c2ecf20Sopenharmony_ci maxItems: 1 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci interrupts: 488c2ecf20Sopenharmony_ci maxItems: 1 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci clocks: 518c2ecf20Sopenharmony_ci minItems: 1 528c2ecf20Sopenharmony_ci maxItems: 2 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci clock-names: 558c2ecf20Sopenharmony_ci oneOf: 568c2ecf20Sopenharmony_ci - items: 578c2ecf20Sopenharmony_ci - const: sysmmu 588c2ecf20Sopenharmony_ci - items: 598c2ecf20Sopenharmony_ci - const: sysmmu 608c2ecf20Sopenharmony_ci - const: master 618c2ecf20Sopenharmony_ci - items: 628c2ecf20Sopenharmony_ci - const: aclk 638c2ecf20Sopenharmony_ci - const: pclk 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci "#iommu-cells": 668c2ecf20Sopenharmony_ci const: 0 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci power-domains: 698c2ecf20Sopenharmony_ci description: | 708c2ecf20Sopenharmony_ci Required if the System MMU is needed to gate its power. 718c2ecf20Sopenharmony_ci Please refer to the following document: 728c2ecf20Sopenharmony_ci Documentation/devicetree/bindings/power/pd-samsung.yaml 738c2ecf20Sopenharmony_ci maxItems: 1 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_cirequired: 768c2ecf20Sopenharmony_ci - compatible 778c2ecf20Sopenharmony_ci - reg 788c2ecf20Sopenharmony_ci - interrupts 798c2ecf20Sopenharmony_ci - clocks 808c2ecf20Sopenharmony_ci - clock-names 818c2ecf20Sopenharmony_ci - "#iommu-cells" 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciadditionalProperties: false 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ciexamples: 868c2ecf20Sopenharmony_ci - | 878c2ecf20Sopenharmony_ci #include <dt-bindings/clock/exynos5250.h> 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci gsc_0: scaler@13e00000 { 908c2ecf20Sopenharmony_ci compatible = "samsung,exynos5-gsc"; 918c2ecf20Sopenharmony_ci reg = <0x13e00000 0x1000>; 928c2ecf20Sopenharmony_ci interrupts = <0 85 0>; 938c2ecf20Sopenharmony_ci power-domains = <&pd_gsc>; 948c2ecf20Sopenharmony_ci clocks = <&clock CLK_GSCL0>; 958c2ecf20Sopenharmony_ci clock-names = "gscl"; 968c2ecf20Sopenharmony_ci iommus = <&sysmmu_gsc0>; 978c2ecf20Sopenharmony_ci }; 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ci sysmmu_gsc0: iommu@13e80000 { 1008c2ecf20Sopenharmony_ci compatible = "samsung,exynos-sysmmu"; 1018c2ecf20Sopenharmony_ci reg = <0x13E80000 0x1000>; 1028c2ecf20Sopenharmony_ci interrupt-parent = <&combiner>; 1038c2ecf20Sopenharmony_ci interrupts = <2 0>; 1048c2ecf20Sopenharmony_ci clock-names = "sysmmu", "master"; 1058c2ecf20Sopenharmony_ci clocks = <&clock CLK_SMMU_GSCL0>, 1068c2ecf20Sopenharmony_ci <&clock CLK_GSCL0>; 1078c2ecf20Sopenharmony_ci power-domains = <&pd_gsc>; 1088c2ecf20Sopenharmony_ci #iommu-cells = <0>; 1098c2ecf20Sopenharmony_ci }; 1108c2ecf20Sopenharmony_ci 111