mirror of https://gitee.com/openkylin/linux.git
78 lines
3.0 KiB
Plaintext
78 lines
3.0 KiB
Plaintext
* 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>;
|
|
};
|