blob: 85f068805dd8a58648ec790dc3fae21ed9ce4796 [file] [log] [blame]
Cho KyongHo93e268d2014-05-12 11:45:01 +05301Samsung Exynos IOMMU H/W, System MMU (System Memory Management Unit)
2
3Samsung's Exynos architecture contains System MMUs that enables scattered
4physical memory chunks visible as a contiguous region to DMA-capable peripheral
5devices like MFC, FIMC, FIMD, GScaler, FIMC-IS and so forth.
6
7System MMU is an IOMMU and supports identical translation table format to
8ARMv7 translation tables with minimum set of page properties including access
9permissions, shareability and security protection. In addition, System MMU has
10another capabilities like L2 TLB or block-fetch buffers to minimize translation
11latency.
12
13System MMUs are in many to one relation with peripheral devices, i.e. single
14peripheral device might have multiple System MMUs (usually one for each bus
15master), but one System MMU can handle transactions from only one peripheral
16device. The relation between a System MMU and the peripheral device needs to be
17defined in device node of the peripheral device.
18
19MFC in all Exynos SoCs and FIMD, M2M Scalers and G2D in Exynos5420 has 2 System
20MMUs.
21* MFC has one System MMU on its left and right bus.
22* FIMD in Exynos5420 has one System MMU for window 0 and 4, the other system MMU
23 for window 1, 2 and 3.
24* M2M Scalers and G2D in Exynos5420 has one System MMU on the read channel and
25 the other System MMU on the write channel.
Cho KyongHo93e268d2014-05-12 11:45:01 +053026
Marek Szyprowskie6802702016-02-18 15:12:57 +010027For information on assigning System MMU controller to its peripheral devices,
28see generic IOMMU bindings.
Shaik Ameer Bashadf15e1d2014-05-14 11:23:33 +053029
Cho KyongHo93e268d2014-05-12 11:45:01 +053030Required properties:
31- compatible: Should be "samsung,exynos-sysmmu"
32- reg: A tuple of base address and size of System MMU registers.
Marek Szyprowskie6802702016-02-18 15:12:57 +010033- #iommu-cells: Should be <0>.
Cho KyongHo93e268d2014-05-12 11:45:01 +053034- interrupt-parent: The phandle of the interrupt controller of System MMU
35- interrupts: An interrupt specifier for interrupt signal of System MMU,
36 according to the format defined by a particular interrupt
37 controller.
Marek Szyprowski740a01e2016-02-18 15:12:58 +010038- clock-names: Should be "sysmmu" or a pair of "aclk" and "pclk" to gate
39 SYSMMU core clocks.
Cho KyongHo93e268d2014-05-12 11:45:01 +053040 Optional "master" if the clock to the System MMU is gated by
Marek Szyprowski740a01e2016-02-18 15:12:58 +010041 another gate clock other core (usually main gate clock
Marek Szyprowskie6802702016-02-18 15:12:57 +010042 of peripheral device this SYSMMU belongs to).
43- clocks: Phandles for respective clocks described by clock-names.
Marek Szyprowski0da65872015-01-24 13:16:15 +090044- power-domains: Required if the System MMU is needed to gate its power.
Cho KyongHo93e268d2014-05-12 11:45:01 +053045 Please refer to the following document:
Krzysztof Kozlowski068812e2015-10-24 05:07:02 +090046 Documentation/devicetree/bindings/power/pd-samsung.txt
Cho KyongHo93e268d2014-05-12 11:45:01 +053047
48Examples:
49 gsc_0: gsc@13e00000 {
50 compatible = "samsung,exynos5-gsc";
51 reg = <0x13e00000 0x1000>;
52 interrupts = <0 85 0>;
Marek Szyprowski0da65872015-01-24 13:16:15 +090053 power-domains = <&pd_gsc>;
Cho KyongHo93e268d2014-05-12 11:45:01 +053054 clocks = <&clock CLK_GSCL0>;
55 clock-names = "gscl";
Marek Szyprowskie6802702016-02-18 15:12:57 +010056 iommus = <&sysmmu_gsc0>;
Cho KyongHo93e268d2014-05-12 11:45:01 +053057 };
58
59 sysmmu_gsc0: sysmmu@13E80000 {
60 compatible = "samsung,exynos-sysmmu";
61 reg = <0x13E80000 0x1000>;
62 interrupt-parent = <&combiner>;
63 interrupts = <2 0>;
64 clock-names = "sysmmu", "master";
65 clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>;
Marek Szyprowski0da65872015-01-24 13:16:15 +090066 power-domains = <&pd_gsc>;
Marek Szyprowskie6802702016-02-18 15:12:57 +010067 #iommu-cells = <0>;
Cho KyongHo93e268d2014-05-12 11:45:01 +053068 };