@@ -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