12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- Samsung Exynos IOMMU H/W, System MMU (System Memory Management Unit)
- Samsung's Exynos architecture contains System MMUs that enables scattered
- physical memory chunks visible as a contiguous region to DMA-capable peripheral
- devices like MFC, FIMC, FIMD, GScaler, FIMC-IS and so forth.
- System MMU is an IOMMU and supports identical translation table format to
- ARMv7 translation tables with minimum set of page properties including access
- permissions, shareability and security protection. In addition, System MMU has
- another capabilities like L2 TLB or block-fetch buffers to minimize translation
- latency.
- System MMUs are in many to one relation with peripheral devices, i.e. single
- peripheral device might have multiple System MMUs (usually one for each bus
- master), but one System MMU can handle transactions from only one peripheral
- device. The relation between a System MMU and the peripheral device needs to be
- defined in device node of the peripheral device.
- MFC in all Exynos SoCs and FIMD, M2M Scalers and G2D in Exynos5420 has 2 System
- MMUs.
- * MFC has one System MMU on its left and right bus.
- * FIMD in Exynos5420 has one System MMU for window 0 and 4, the other system MMU
- for window 1, 2 and 3.
- * M2M Scalers and G2D in Exynos5420 has one System MMU on the read channel and
- the other System MMU on the write channel.
- The drivers must consider how to handle those System MMUs. One of the idea is
- to implement child devices or sub-devices which are the client devices of the
- System MMU.
- Note:
- The current DT binding for the Exynos System MMU is incomplete.
- The following properties can be removed or changed, if found incompatible with
- the "Generic IOMMU Binding" support for attaching devices to the IOMMU.
- Required properties:
- - compatible: Should be "samsung,exynos-sysmmu"
- - reg: A tuple of base address and size of System MMU registers.
- - interrupt-parent: The phandle of the interrupt controller of System MMU
- - interrupts: An interrupt specifier for interrupt signal of System MMU,
- according to the format defined by a particular interrupt
- controller.
- - clock-names: Should be "sysmmu" if the System MMU is needed to gate its clock.
- Optional "master" if the clock to the System MMU is gated by
- another gate clock other than "sysmmu".
- Exynos4 SoCs, there needs no "master" clock.
- Exynos5 SoCs, some System MMUs must have "master" clocks.
- - clocks: Required if the System MMU is needed to gate its clock.
- - power-domains: Required if the System MMU is needed to gate its power.
- Please refer to the following document:
- Documentation/devicetree/bindings/power/pd-samsung.txt
- Examples:
- gsc_0: gsc@13e00000 {
- compatible = "samsung,exynos5-gsc";
- reg = <0x13e00000 0x1000>;
- interrupts = <0 85 0>;
- power-domains = <&pd_gsc>;
- clocks = <&clock CLK_GSCL0>;
- clock-names = "gscl";
- };
- sysmmu_gsc0: sysmmu@13E80000 {
- compatible = "samsung,exynos-sysmmu";
- reg = <0x13E80000 0x1000>;
- interrupt-parent = <&combiner>;
- interrupts = <2 0>;
- clock-names = "sysmmu", "master";
- clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>;
- power-domains = <&pd_gsc>;
- };
|