<p><br>
2013. 1. 4. 오전 8:32에 "Sylwester Nawrocki" <<a href="mailto:sylvester.nawrocki@gmail.com">sylvester.nawrocki@gmail.com</a>>님이 작성:<br>
><br>
> Hi,<br>
><br>
> Cc: devicetree-discuss <<a href="mailto:devicetree-discuss@lists.ozlabs.org">devicetree-discuss@lists.ozlabs.org</a>><br>
><br>
><br>
> On 12/26/2012 02:53 AM, Cho KyongHo wrote:<br>
>><br>
>> notice: v6 patch-set is rebased on next/iommu-exynos branch of<br>
>> linux-samsung.git.  This patch-set does not include 2 patches (05 and 06<br>
>> patches in v5 patch-se) because they alread exist already in the branch.<br>
>><br>
>> The current exynos-iommu(System MMU) driver does not work autonomously<br>
>> since it is lack of support for power management of peripheral blocks.<br>
>> For example, MFC device driver must ensure that its System MMU is disabled<br>
>> before MFC block is power-down not to invalidate IOTLB in the System MMU<br>
>> when I/O memory mapping is changed. Because A System MMU is resides in the<br>
>> same H/W block, access to control registers of System MMU while the H/W<br>
>> block is turned off must be prohibited.<br>
>><br>
>> This set of changes solves the above problem with setting each System MMUs<br>
>> as the parent of the device which owns the System MMU to recieve the<br>
>> information when the device is turned off or turned on.<br>
><br>
><br>
> I intend to make Exynos4412 FIMC-LITEn (Exynos5 CAMIFn) devices child<br>
> devices of the FIMC-IS (camera ISP) platform device. This patch reflects<br>
> that: <a href="http://patchwork.linuxtv.org/patch/16046">http://patchwork.linuxtv.org/patch/16046</a><br>
><br>
> This is required since AFAIK FIMC-LITE depends on clocks from FIMC-IS.<br>
> By setting fimc-is device as the parent fimc-lite's dependency on it is<br>
> resolved without any hacks between these drivers.<br>
><br>
> Then how this tree will look like after your sysmmu related re-parenting:<br>
><br>
>          fimc-is<br>
>         /      \<br>
>  fimc-lite0    fimc-lite1<br>
><br>
><br>
> ?</p>
<p>First of all, I think that clock dependency shuold be resolved with setting the parent of clock descriptor of fimc-lite  to the clock descriptor of fimc-is.<br>
If you are concerning about power management, it is simply resolved with putting fimc-lite to the power domain of fimc-is.<br>
The above tree will be changed like below after probing System MMU:<br>
sysmmu-fimc-is<br>
            I<br>
     fimc-is</p>
<p>sysmmu-fimc-lite0<br>
              I<br>
      fimc-lite0</p>
<p>sysmmu-fimc-lite1<br>
             I<br>
       fimc-lite1</p>
<p>>> Another big change to the driver is the support for devicetree.<br>
>> The bindings for System MMU is described in<br>
>> Documentation/devicetree/bindings/arm/samsung/system-mmu.txt<br>
><br>
><br>
> Yes, and there is no patch adding this file in this series. Let me paste<br>
> it here:<br>
><br>
> From 88987ff5b77acc7211b9f537a6ef6ea38e3efdd0 Mon Sep 17 00:00:00 2001<br>
> From: KyongHo Cho <<a href="mailto:pullip.cho@samsung.com">pullip.cho@samsung.com</a>><br>
> Date: Tue, 11 Dec 2012 14:06:25 +0900<br>
> Subject: [PATCH] ARM: EXYNOS: add System MMU definition to DT<br>
><br>
> This commit adds System MMU nodes to DT of Exynos SoCs.<br>
><br>
> Signed-off-by: KyongHo Cho <<a href="mailto:pullip.cho@samsung.com">pullip.cho@samsung.com</a>><br>
> Signed-off-by: Kukjin Kim <<a href="mailto:kgene.kim@samsung.com">kgene.kim@samsung.com</a>><br>
> ---<br>
>  .../devicetree/bindings/arm/exynos/system-mmu.txt  |   86 ++++++++++++<br>
>  arch/arm/boot/dts/exynos4210.dtsi                  |   96 +++++++++++++<br>
>  arch/arm/boot/dts/exynos4x12.dtsi                  |  124 +++++++++++++++++<br>
>  arch/arm/boot/dts/exynos5250.dtsi                  |  147 +++++++++++++++++++-<br>
>  4 files changed, 451 insertions(+), 2 deletions(-)<br>
>  create mode 100644 Documentation/devicetree/bindings/arm/exynos/system-mmu.txt<br>
><br>
> diff --git a/Documentation/devicetree/bindings/arm/exynos/system-mmu.txt b/Documentation/devicetree/bindings/arm/exynos/system-mmu.txt<br>
> new file mode 100644<br>
> index 0000000..b33d682<br>
> --- /dev/null<br>
> +++ b/Documentation/devicetree/bindings/arm/exynos/system-mmu.txt<br>
> @@ -0,0 +1,86 @@<br>
> +* Samsung Exynos System MMU<br>
> +<br>
> +Samsung's Exynos architecture includes System MMU that enables scattered<br>
> +physical chunks to be visible as a contiguous region to DMA-capabile peripheral<br>
> +devices like MFC, FIMC, FIMD, GScaler, FIMC-IS and so forth.<br>
> +<br>
> +System MMU is a sort of IOMMU and support identical translation table format to<br>
> +ARMv7 translation tables with minimum set of page properties including access<br>
> +permissions, shareability and security protection. In addition System MMU has<br>
> +another capabilities like L2 TLB or block-fetch buffers to minimize translation<br>
> +latency<br>
> +<br>
> +Each System MMU is included in the H/W block of a peripheral device. Thus, it is<br>
> +important to specify that a System MMU is dedicated to which peripheral device<br>
> +before using System MMU. System initialization must specify the relationships<br>
> +between a System MMU and a peripheral device that owns the System MMU.<br>
> +<br>
> +Some device drivers may control several peripheral devices with a single device<br>
> +descriptor like MFC. Since handling a System MMU with IOMMU API requires a<br>
> +device descriptor that needs the System MMU, it is best to combine the System<br>
> +MMUs of the peripheral devices and control them with a single System MMU device<br>
> +descriptor. If it is unable to combine them into a single device descriptor,<br>
> +they can be linked with each other by the means of device.parent relationship.<br>
> +<br>
> +Required properties:<br>
> +- compatible: Should be "samsung,exynos-sysmmu".<br>
> +- reg: Tuples of base address and size of System MMU registers. The number of<br>
> +       tuples can be more than one if two or more System MMUs are controlled<br>
> +       by a single device descriptor.<br>
> +- interrupt-parent: The phandle of the interrupt controller of System MMU<br>
> +- interrupts: Tuples of numbers that indicates the interrupt source. The<br>
> +              number of elements in the tuple is dependent upon<br>
> +             'interrupt-parent' property. The number of tuples in this property<br>
> +             must be the same with 'reg' property.<br>
> +<br>
> +Optional properties:<br>
> +- mmuname: Strings of the name of System MMU for debugging purpose. The number<br>
> +          of strings must be the same with the number of tuples in 'reg'<br>
> +          property.<br>
><br>
> As commented on previous patch, this isn't something that belongs here.<br>
> But for debugging you could probably retrieve this from the node name ?</p>
<p>Thank you for good idea. However mmuname is an array of strings, actually. Anyway I agree with your opinion that 'mmuname' is not proper property of a device node. I will remove it and substitute it with base register address of a System MMU.<br>

><br>
> +- mmu-master: phandle to the device node that owns System MMU. Only the device<br>
> +          that is specified whith this property can control System MMU with<br>
> +          IOMMU API.<br>
> +<br>
> +Examples:<br>
> +<br>
> +MFC has 2 System MMUs for each port that MFC is attached. Thus it seems natural<br>
> +to define 2 System MMUs for each port of the MFC:<br>
> +<br>
> +       sysmmu-mfc-l {<br>
> +               mmuname = "mfc_l";<br>
> +               reg = <0x11210000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <8 5>;<br>
> +               mmu-master = <&mfc>;<br>
> +       };<br>
> +<br>
> +       sysmmu-mfc-r {<br>
> +               mmuname = "mfc_r";<br>
> +               reg = <0x11200000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <6 2>;<br>
> +               mmu-master = <&mfc>;<br>
> +       };<br>
> +<br>
> +Actually, MFC device driver requires sub-devices that represents each port and<br>
> +above 'mmu-master' properties of sysmmu-mfc-l and sysmmu-mfc-r have the phandles<br>
> +to those sub-devices.<br>
><br>
> I find this sentence really difficult to parse. This documentation should talk<br>
> about how the device is designed and represented, rather than about its driver.<br>
><br>
OK. I will trying to find another expression easy to understand.  Do you have any suggestion?</p>
<p>> +However, it is also a good idea that treats the above System MMUs as one System<br>
> +MMU because those System MMUs are actually required by the MFC device:<br>
> +<br>
> +       sysmmu-mfc {<br>
> +               mmuname = "mfc_l", "mfc_r";<br>
> +               reg = <0x11210000 0x1000<br>
> +                      0x11200000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <8 5<br>
> +                             6 2>;<br>
> +               mmu-master = <&mfc>;<br>
> +       };<br>
> +<br>
> +If System MMU of MFC is defined like the above, the number of elements and the<br>
> +order of list in 'mmuname', 'reg' and 'interrupts' must be the same.<br>
> diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi<br>
> index e31bfc4..1c134b2 100644<br>
> --- a/arch/arm/boot/dts/exynos4210.dtsi<br>
> +++ b/arch/arm/boot/dts/exynos4210.dtsi<br>
> @@ -76,4 +76,100 @@<br>
>                 reg = <0x100C0000 0x100>;<br>
>                 interrupts = <2 4>;<br>
>         };<br>
> +<br>
> +       sysmmu-mfcL {<br>
><br>
> This capitalization looks weird. How about just making it sysmmu-mfc-l ?<br>
OK. That looks better.<br>
><br>
> +               mmuname = "mfc_l";<br>
> +               reg = <0x13620000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-mfcR {<br>
><br>
> and sysmmu-mfc-r ?<br>
><br>
> Hmm, you actually have it defined this way for exynos5250...<br>
Oh really I did. I will make it better.<br>
><br>
> +               mmuname = "mfc_r";<br>
> +               reg = <0x13630000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 6>;<br>
> +       };<br>
> +<br>
> +       sysmmu-tv {<br>
> +               mmuname = "tv";<br>
> +               reg = <0x13E20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 4>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc0 {<br>
> +               mmuname = "fimc0";<br>
> +               reg = <0x11A20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc1 {<br>
> +               mmuname = "fimc1";<br>
> +               reg = <0x11A30000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 3>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc2 {<br>
> +               mmuname = "fimc2";<br>
> +               reg = <0x11A40000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 4>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc3 {<br>
> +               mmuname = "fimc3";<br>
> +               reg = <0x11A50000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-jpeg {<br>
> +               mmuname = "jpeg";<br>
> +               reg = <0x11A60000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 6>;<br>
> +       };<br>
> +<br>
> +       sysmmu-g2d {<br>
> +               mmuname = "g2d";<br>
> +               reg = <0x12A20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 7>;<br>
> +       };<br>
> +<br>
> +       sysmmu-rotator {<br>
> +               mmuname = "rotator";<br>
> +               reg = <0x12A30000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 0>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimd0 {<br>
> +               mmuname = "fimd0";<br>
> +               reg = <0x11E20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimd1 {<br>
> +               mmuname = "fimd1";<br>
> +               reg = <0x12220000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 3>;<br>
> +       };<br>
>  };<br>
> diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi<br>
> index 179a62e..0c6d001 100644<br>
> --- a/arch/arm/boot/dts/exynos4x12.dtsi<br>
> +++ b/arch/arm/boot/dts/exynos4x12.dtsi<br>
> @@ -66,4 +66,128 @@<br>
>                 reg = <0x106E0000 0x1000>;<br>
>                 interrupts = <0 72 0>;<br>
>         };<br>
> +<br>
> +       sysmmu-mfcL {<br>
> +               mmuname = "mfc_l";<br>
> +               reg = <0x13620000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-mfcR {<br>
> +               mmuname = "mfc_r";<br>
> +               reg = <0x13630000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 6>;<br>
> +       };<br>
> +<br>
> +       sysmmu-tv {<br>
> +               mmuname = "tv";<br>
> +               reg = <0x13E20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 4>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc0 {<br>
> +               mmuname = "fimc0";<br>
> +               reg = <0x11A20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc1 {<br>
> +               mmuname = "fimc1";<br>
> +               reg = <0x11A30000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 3>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc2 {<br>
> +               mmuname = "fimc2";<br>
> +               reg = <0x11A40000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 4>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimc3 {<br>
> +               mmuname = "fimc3";<br>
> +               reg = <0x11A50000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-jpeg {<br>
> +               mmuname = "jpeg";<br>
> +               reg = <0x11A60000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 6>;<br>
> +       };<br>
> +<br>
> +       sysmmu-g2d {<br>
> +               mmuname = "g2d";<br>
> +               reg = <0x10A40000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 7>;<br>
> +       };<br>
> +<br>
> +       sysmmu-rotator {<br>
> +               mmuname = "rotator";<br>
> +               reg = <0x12A30000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 0>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimd0 {<br>
> +               mmuname = "fimd0";<br>
> +               reg = <0x11E20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <5 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-is0 {<br>
> +               mmuname = "isp", "drc", "fd";<br>
> +               reg = < 0x12260000 0x1000<br>
> +                       0x12270000 0x1000<br>
> +                       0x122A0000 0x1000 >;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <  16 2<br>
> +                               16 3<br>
> +                               16 4 >;<br>
> +       };<br>
> +<br>
> +       sysmmu-is1 {<br>
> +               mmuname = "ispcpu";<br>
> +               reg = <0x122B0000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <16 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-flite0 {<br>
> +               mmuname = "fimc-lite0";<br>
> +               reg = <0x123B0000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <16 0>;<br>
> +       };<br>
> +<br>
> +       sysmmu-flite1 {<br>
> +               mmuname = "fimc-lite1";<br>
> +               reg = <0x123C0000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <16 1>;<br>
> +       };<br>
>  };<br>
> diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi<br>
> index 2e3b6ef..2ff6d78 100644<br>
> --- a/arch/arm/boot/dts/exynos5250.dtsi<br>
> +++ b/arch/arm/boot/dts/exynos5250.dtsi<br>
> @@ -75,7 +75,7 @@<br>
>                 interrupts = <0 42 0>;<br>
>         };<br>
><br>
> -       codec@11000000 {<br>
> +       mfc: codec@11000000 {<br>
>                 compatible = "samsung,mfc-v6";<br>
>                 reg = <0x11000000 0x10000>;<br>
>                 interrupts = <0 96 0>;<br>
> @@ -578,9 +578,152 @@<br>
>                 interrupts = <0 95 0>;<br>
>         };<br>
><br>
> -       mixer {<br>
> +       mixer: mixer {<br>
>                 compatible = "samsung,exynos5-mixer";<br>
>                 reg = <0x14450000 0x10000>;<br>
>                 interrupts = <0 94 0>;<br>
>         };<br>
> +<br>
> +       sysmmu-mfc-l {<br>
> +               mmuname = "mfc_l";<br>
> +               reg = <0x11210000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <8 5>;<br>
> +               mmu-master = <&mfc>;<br>
> +       };<br>
> +<br>
> +       sysmmu-mfc-r {<br>
> +               mmuname = "mfc_r";<br>
> +               reg = <0x11200000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <6 2>;<br>
> +               mmu-master = <&mfc>;<br>
> +       };<br>
> +<br>
> +       sysmmu-tv {<br>
> +               mmuname = "tv";<br>
> +               reg = <0x14650000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <7 4>;<br>
> +               mmu-master = <&mixer>;<br>
> +       };<br>
> +<br>
> +       sysmmu-gsc0 {<br>
> +               mmuname = "gsc0";<br>
> +               reg = <0x13E80000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <2 0>;<br>
> +               mmu-master = <&gsc_0>;<br>
> +       };<br>
> +<br>
> +       sysmmu-gsc1 {<br>
> +               mmuname = "gsc1";<br>
> +               reg = <0x13E90000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <2 2>;<br>
> +               mmu-master = <&gsc_1>;<br>
> +       };<br>
> +<br>
> +       sysmmu-gsc2 {<br>
> +               mmuname = "gsc2";<br>
> +               reg = <0x13EA0000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <2 4>;<br>
> +               mmu-master = <&gsc_2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-gsc3 {<br>
> +               mmuname = "gsc3";<br>
> +               reg = <0x13EB0000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <2 6>;<br>
> +               mmu-master = <&gsc_3>;<br>
> +       };<br>
> +<br>
> +       sysmmu-fimd1 {<br>
> +               mmuname = "fimd1";<br>
> +               reg = <0x14640000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <3 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-rotator {<br>
> +               mmuname = "rotator";<br>
> +               reg = <0x11D40000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 0>;<br>
> +       };<br>
> +<br>
> +       sysmmu-is0 {<br>
> +               mmuname = "isp", "drc", "scalerc", "scalerp", "fd", "mcu";<br>
> +               reg = < 0x13260000 0x1000<br>
> +                       0x13270000 0x1000<br>
> +                       0x13280000 0x1000<br>
> +                       0x13290000 0x1000<br>
> +                       0x132A0000 0x1000<br>
> +                       0x132B0000 0x1000 >;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <  10 6<br>
> +                               11 6<br>
> +                                5 2<br>
> +                                3 6<br>
> +                                5 0<br>
> +                                5 4 >;<br>
><br>
> I believe this should be<br>
><br>
>                 interrupts = <10 6>, <11 6>, <5 2>,<br>
>                              <3 6>, <5 0>, <5 4>;<br>
><br>
I found the syntax of array of resources in the specifications of device tree. I found that it works correctly.<br>
> +       };<br>
> +<br>
> +       sysmmu-is1 {<br>
> +               mmuname = "odc", "dis0", "dis1", "3dnr";<br>
> +               reg = < 0x132C0000 0x1000<br>
> +                       0x132D0000 0x1000<br>
> +                       0x132E0000 0x1000<br>
> +                       0x132F0000 0x1000 >;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <  11 0<br>
> +                               10 4<br>
> +                                9 4<br>
> +                                5 6 >;<br>
><br>
> Ditto.<br>
><br>
> +       };<br>
> +<br>
> +       sysmmu-2d {<br>
> +               mmuname = "2d";<br>
> +               reg = <0x10A60000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <24 5>;<br>
> +       };<br>
> +<br>
> +       sysmmu-jpeg {<br>
> +               mmuname = "jpeg";<br>
> +               reg = <0x11F20000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <4 2>;<br>
> +       };<br>
> +<br>
> +       sysmmu-flite0 {<br>
> +               mmuname = "flite0";<br>
> +               reg = <0x13C40000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <3 4>;<br>
> +       };<br>
> +<br>
> +       sysmmu-flite1 {<br>
> +               mmuname = "flite1";<br>
> +               reg = <0x13C50000 0x1000>;<br>
> +               compatible = "samsung,exynos-sysmmu";<br>
> +               interrupt-parent = <&combiner>;<br>
> +               interrupts = <24 1>;<br>
> +       };<br>
>  };<br>
><br>
> --<br>
><br>
> Thanks,<br>
> Sylwester<br>
><br>
Thank you for kind review.</p>
<p>KyongHo</p>