1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- * ARM System MMU Architecture Implementation
- ARM SoCs may contain an implementation of the ARM System Memory
- Management Unit Architecture, which can be used to provide 1 or 2 stages
- of address translation to bus masters external to the CPU.
- The SMMU may also raise interrupts in response to various fault
- conditions.
- ** System MMU required properties:
- - compatible : Should be one of:
- "arm,smmu-v1"
- "arm,smmu-v2"
- "arm,mmu-400"
- "arm,mmu-401"
- "arm,mmu-500"
- depending on the particular implementation and/or the
- version of the architecture implemented.
- - reg : Base address and size of the SMMU.
- - #global-interrupts : The number of global interrupts exposed by the
- device.
- - interrupts : Interrupt list, with the first #global-irqs entries
- corresponding to the global interrupts and any
- following entries corresponding to context interrupts,
- specified in order of their indexing by the SMMU.
- For SMMUv2 implementations, there must be exactly one
- interrupt per context bank. In the case of a single,
- combined interrupt, it must be listed multiple times.
- - mmu-masters : A list of phandles to device nodes representing bus
- masters for which the SMMU can provide a translation
- and their corresponding StreamIDs (see example below).
- Each device node linked from this list must have a
- "#stream-id-cells" property, indicating the number of
- StreamIDs associated with it.
- ** System MMU optional properties:
- - dma-coherent : Present if page table walks made by the SMMU are
- cache coherent with the CPU.
- NOTE: this only applies to the SMMU itself, not
- masters connected upstream of the SMMU.
- - calxeda,smmu-secure-config-access : Enable proper handling of buggy
- implementations that always use secure access to
- SMMU configuration registers. In this case non-secure
- aliases of secure registers have to be used during
- SMMU configuration.
- Example:
- smmu {
- compatible = "arm,smmu-v1";
- reg = <0xba5e0000 0x10000>;
- #global-interrupts = <2>;
- interrupts = <0 32 4>,
- <0 33 4>,
- <0 34 4>, /* This is the first context interrupt */
- <0 35 4>,
- <0 36 4>,
- <0 37 4>;
- /*
- * Two DMA controllers, the first with two StreamIDs (0xd01d
- * and 0xd01e) and the second with only one (0xd11c).
- */
- mmu-masters = <&dma0 0xd01d 0xd01e>,
- <&dma1 0xd11c>;
- };
|