Skip to content

Commit d0acbb7

Browse files
rmurphy-armwildea01
authored andcommitted
Docs: dt: document ARM SMMU generic binding usage
Document how the generic "iommus" binding should be used to describe ARM SMMU stream IDs instead of the old "mmu-masters" binding. Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
1 parent adfec2e commit d0acbb7

File tree

1 file changed

+47
-14
lines changed

1 file changed

+47
-14
lines changed

Documentation/devicetree/bindings/iommu/arm,smmu.txt

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,16 @@ conditions.
3535
interrupt per context bank. In the case of a single,
3636
combined interrupt, it must be listed multiple times.
3737

38-
- mmu-masters : A list of phandles to device nodes representing bus
39-
masters for which the SMMU can provide a translation
40-
and their corresponding StreamIDs (see example below).
41-
Each device node linked from this list must have a
42-
"#stream-id-cells" property, indicating the number of
43-
StreamIDs associated with it.
38+
- #iommu-cells : See Documentation/devicetree/bindings/iommu/iommu.txt
39+
for details. With a value of 1, each "iommus" entry
40+
represents a distinct stream ID emitted by that device
41+
into the relevant SMMU.
42+
43+
SMMUs with stream matching support and complex masters
44+
may use a value of 2, where the second cell represents
45+
an SMR mask to combine with the ID in the first cell.
46+
Care must be taken to ensure the set of matched IDs
47+
does not result in conflicts.
4448

4549
** System MMU optional properties:
4650

@@ -56,9 +60,20 @@ conditions.
5660
aliases of secure registers have to be used during
5761
SMMU configuration.
5862

59-
Example:
63+
** Deprecated properties:
64+
65+
- mmu-masters (deprecated in favour of the generic "iommus" binding) :
66+
A list of phandles to device nodes representing bus
67+
masters for which the SMMU can provide a translation
68+
and their corresponding Stream IDs. Each device node
69+
linked from this list must have a "#stream-id-cells"
70+
property, indicating the number of Stream ID
71+
arguments associated with its phandle.
6072

61-
smmu {
73+
** Examples:
74+
75+
/* SMMU with stream matching or stream indexing */
76+
smmu1: iommu {
6277
compatible = "arm,smmu-v1";
6378
reg = <0xba5e0000 0x10000>;
6479
#global-interrupts = <2>;
@@ -68,11 +83,29 @@ Example:
6883
<0 35 4>,
6984
<0 36 4>,
7085
<0 37 4>;
86+
#iommu-cells = <1>;
87+
};
88+
89+
/* device with two stream IDs, 0 and 7 */
90+
master1 {
91+
iommus = <&smmu1 0>,
92+
<&smmu1 7>;
93+
};
94+
95+
96+
/* SMMU with stream matching */
97+
smmu2: iommu {
98+
...
99+
#iommu-cells = <2>;
100+
};
101+
102+
/* device with stream IDs 0 and 7 */
103+
master2 {
104+
iommus = <&smmu2 0 0>,
105+
<&smmu2 7 0>;
106+
};
71107

72-
/*
73-
* Two DMA controllers, the first with two StreamIDs (0xd01d
74-
* and 0xd01e) and the second with only one (0xd11c).
75-
*/
76-
mmu-masters = <&dma0 0xd01d 0xd01e>,
77-
<&dma1 0xd11c>;
108+
/* device with stream IDs 1, 17, 33 and 49 */
109+
master3 {
110+
iommus = <&smmu2 1 0x30>;
78111
};

0 commit comments

Comments
 (0)