~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/iommu/arm,smmu.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/devicetree/bindings/iommu/arm,smmu.yaml (Version linux-6.12-rc7) and /Documentation/devicetree/bindings/iommu/arm,smmu.yaml (Version linux-6.0.19)


  1 # SPDX-License-Identifier: GPL-2.0-only             1 # SPDX-License-Identifier: GPL-2.0-only
  2 %YAML 1.2                                           2 %YAML 1.2
  3 ---                                                 3 ---
  4 $id: http://devicetree.org/schemas/iommu/arm,s      4 $id: http://devicetree.org/schemas/iommu/arm,smmu.yaml#
  5 $schema: http://devicetree.org/meta-schemas/co      5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6                                                     6 
  7 title: ARM System MMU Architecture Implementat      7 title: ARM System MMU Architecture Implementation
  8                                                     8 
  9 maintainers:                                        9 maintainers:
 10   - Will Deacon <will@kernel.org>                   10   - Will Deacon <will@kernel.org>
 11   - Robin Murphy <Robin.Murphy@arm.com>             11   - Robin Murphy <Robin.Murphy@arm.com>
 12                                                    12 
 13 description: |+                                    13 description: |+
 14   ARM SoCs may contain an implementation of th     14   ARM SoCs may contain an implementation of the ARM System Memory
 15   Management Unit Architecture, which can be u     15   Management Unit Architecture, which can be used to provide 1 or 2 stages
 16   of address translation to bus masters extern     16   of address translation to bus masters external to the CPU.
 17                                                    17 
 18   The SMMU may also raise interrupts in respon     18   The SMMU may also raise interrupts in response to various fault
 19   conditions.                                      19   conditions.
 20                                                    20 
 21 properties:                                        21 properties:
 22   $nodename:                                       22   $nodename:
 23     pattern: "^iommu@[0-9a-f]*"                    23     pattern: "^iommu@[0-9a-f]*"
 24   compatible:                                      24   compatible:
 25     oneOf:                                         25     oneOf:
 26       - description: Qcom SoCs implementing "a     26       - description: Qcom SoCs implementing "arm,smmu-v2"
 27         items:                                     27         items:
 28           - enum:                                  28           - enum:
 29               - qcom,msm8996-smmu-v2               29               - qcom,msm8996-smmu-v2
 30               - qcom,msm8998-smmu-v2               30               - qcom,msm8998-smmu-v2
 31               - qcom,sdm630-smmu-v2            << 
 32               - qcom,sm6375-smmu-v2            << 
 33           - const: qcom,smmu-v2                    31           - const: qcom,smmu-v2
 34                                                    32 
 35       - description: Qcom SoCs implementing "q !!  33       - description: Qcom SoCs implementing "arm,mmu-500"
 36         items:                                     34         items:
 37           - enum:                                  35           - enum:
 38               - qcom,qcm2290-smmu-500              36               - qcom,qcm2290-smmu-500
 39               - qcom,qcs8300-smmu-500          << 
 40               - qcom,qdu1000-smmu-500          << 
 41               - qcom,sa8255p-smmu-500          << 
 42               - qcom,sa8775p-smmu-500          << 
 43               - qcom,sc7180-smmu-500               37               - qcom,sc7180-smmu-500
 44               - qcom,sc7280-smmu-500               38               - qcom,sc7280-smmu-500
 45               - qcom,sc8180x-smmu-500              39               - qcom,sc8180x-smmu-500
 46               - qcom,sc8280xp-smmu-500             40               - qcom,sc8280xp-smmu-500
 47               - qcom,sdm670-smmu-500           << 
 48               - qcom,sdm845-smmu-500               41               - qcom,sdm845-smmu-500
 49               - qcom,sdx55-smmu-500                42               - qcom,sdx55-smmu-500
 50               - qcom,sdx65-smmu-500                43               - qcom,sdx65-smmu-500
 51               - qcom,sdx75-smmu-500            << 
 52               - qcom,sm6115-smmu-500           << 
 53               - qcom,sm6125-smmu-500           << 
 54               - qcom,sm6350-smmu-500               44               - qcom,sm6350-smmu-500
 55               - qcom,sm6375-smmu-500               45               - qcom,sm6375-smmu-500
 56               - qcom,sm8150-smmu-500               46               - qcom,sm8150-smmu-500
 57               - qcom,sm8250-smmu-500               47               - qcom,sm8250-smmu-500
 58               - qcom,sm8350-smmu-500               48               - qcom,sm8350-smmu-500
 59               - qcom,sm8450-smmu-500               49               - qcom,sm8450-smmu-500
 60               - qcom,sm8550-smmu-500           << 
 61               - qcom,sm8650-smmu-500           << 
 62               - qcom,x1e80100-smmu-500         << 
 63           - const: qcom,smmu-500               << 
 64           - const: arm,mmu-500                 << 
 65                                                << 
 66       - description: Qcom SoCs implementing "a << 
 67         deprecated: true                       << 
 68         items:                                 << 
 69           # Do not add additional SoC to this  << 
 70           - enum:                              << 
 71               - qcom,qcm2290-smmu-500          << 
 72               - qcom,sc7180-smmu-500           << 
 73               - qcom,sc7280-smmu-500           << 
 74               - qcom,sc8180x-smmu-500          << 
 75               - qcom,sc8280xp-smmu-500         << 
 76               - qcom,sdm845-smmu-500           << 
 77               - qcom,sm6115-smmu-500           << 
 78               - qcom,sm6350-smmu-500           << 
 79               - qcom,sm6375-smmu-500           << 
 80               - qcom,sm8150-smmu-500           << 
 81               - qcom,sm8250-smmu-500           << 
 82               - qcom,sm8350-smmu-500           << 
 83               - qcom,sm8450-smmu-500           << 
 84           - const: arm,mmu-500                 << 
 85       - description: Qcom Adreno GPUs implemen << 
 86         items:                                 << 
 87           - enum:                              << 
 88               - qcom,qcm2290-smmu-500          << 
 89               - qcom,sa8255p-smmu-500          << 
 90               - qcom,sa8775p-smmu-500          << 
 91               - qcom,sc7280-smmu-500           << 
 92               - qcom,sc8180x-smmu-500          << 
 93               - qcom,sc8280xp-smmu-500         << 
 94               - qcom,sm6115-smmu-500           << 
 95               - qcom,sm6125-smmu-500           << 
 96               - qcom,sm8150-smmu-500           << 
 97               - qcom,sm8250-smmu-500           << 
 98               - qcom,sm8350-smmu-500           << 
 99               - qcom,sm8450-smmu-500           << 
100               - qcom,sm8550-smmu-500           << 
101               - qcom,sm8650-smmu-500           << 
102               - qcom,x1e80100-smmu-500         << 
103           - const: qcom,adreno-smmu            << 
104           - const: qcom,smmu-500               << 
105           - const: arm,mmu-500                 << 
106       - description: Qcom Adreno GPUs implemen << 
107         deprecated: true                       << 
108         items:                                 << 
109           # Do not add additional SoC to this  << 
110           - enum:                              << 
111               - qcom,sc7280-smmu-500           << 
112               - qcom,sm8150-smmu-500           << 
113               - qcom,sm8250-smmu-500           << 
114           - const: qcom,adreno-smmu            << 
115           - const: arm,mmu-500                     50           - const: arm,mmu-500
116       - description: Qcom Adreno GPUs implemen     51       - description: Qcom Adreno GPUs implementing "arm,smmu-v2"
117         items:                                     52         items:
118           - enum:                                  53           - enum:
119               - qcom,msm8996-smmu-v2           << 
120               - qcom,sc7180-smmu-v2                54               - qcom,sc7180-smmu-v2
121               - qcom,sdm630-smmu-v2            << 
122               - qcom,sdm845-smmu-v2                55               - qcom,sdm845-smmu-v2
123               - qcom,sm6350-smmu-v2            << 
124               - qcom,sm7150-smmu-v2            << 
125           - const: qcom,adreno-smmu                56           - const: qcom,adreno-smmu
126           - const: qcom,smmu-v2                    57           - const: qcom,smmu-v2
127       - description: Qcom Adreno GPUs on Googl << 
128         items:                                 << 
129           - const: qcom,sdm845-smmu-v2         << 
130           - const: qcom,smmu-v2                << 
131       - description: Marvell SoCs implementing     58       - description: Marvell SoCs implementing "arm,mmu-500"
132         items:                                     59         items:
133           - const: marvell,ap806-smmu-500          60           - const: marvell,ap806-smmu-500
134           - const: arm,mmu-500                     61           - const: arm,mmu-500
135       - description: NVIDIA SoCs that require      62       - description: NVIDIA SoCs that require memory controller interaction
136           and may program multiple ARM MMU-500     63           and may program multiple ARM MMU-500s identically with the memory
137           controller interleaving translations     64           controller interleaving translations between multiple instances
138           for improved performance.                65           for improved performance.
139         items:                                     66         items:
140           - enum:                                  67           - enum:
141               - nvidia,tegra186-smmu               68               - nvidia,tegra186-smmu
142               - nvidia,tegra194-smmu               69               - nvidia,tegra194-smmu
143               - nvidia,tegra234-smmu               70               - nvidia,tegra234-smmu
144           - const: nvidia,smmu-500                 71           - const: nvidia,smmu-500
145       - items:                                     72       - items:
146           - const: arm,mmu-500                     73           - const: arm,mmu-500
147           - const: arm,smmu-v2                     74           - const: arm,smmu-v2
148       - items:                                     75       - items:
149           - enum:                                  76           - enum:
150               - arm,mmu-400                        77               - arm,mmu-400
151               - arm,mmu-401                        78               - arm,mmu-401
152           - const: arm,smmu-v1                     79           - const: arm,smmu-v1
153       - enum:                                      80       - enum:
154           - arm,smmu-v1                            81           - arm,smmu-v1
155           - arm,smmu-v2                            82           - arm,smmu-v2
156           - arm,mmu-400                            83           - arm,mmu-400
157           - arm,mmu-401                            84           - arm,mmu-401
158           - arm,mmu-500                            85           - arm,mmu-500
159           - cavium,smmu-v2                         86           - cavium,smmu-v2
160                                                    87 
161   reg:                                             88   reg:
162     minItems: 1                                    89     minItems: 1
163     maxItems: 2                                    90     maxItems: 2
164                                                    91 
165   '#global-interrupts':                            92   '#global-interrupts':
166     description: The number of global interrup     93     description: The number of global interrupts exposed by the device.
167     $ref: /schemas/types.yaml#/definitions/uin     94     $ref: /schemas/types.yaml#/definitions/uint32
168     minimum: 0                                     95     minimum: 0
169     maximum: 260   # 2 secure, 2 non-secure, a     96     maximum: 260   # 2 secure, 2 non-secure, and up to 256 perf counters
170                                                    97 
171   '#iommu-cells':                                  98   '#iommu-cells':
172     enum: [ 1, 2 ]                                 99     enum: [ 1, 2 ]
173     description: |                                100     description: |
174       See Documentation/devicetree/bindings/io    101       See Documentation/devicetree/bindings/iommu/iommu.txt for details. With a
175       value of 1, each IOMMU specifier represe    102       value of 1, each IOMMU specifier represents a distinct stream ID emitted
176       by that device into the relevant SMMU.      103       by that device into the relevant SMMU.
177                                                   104 
178       SMMUs with stream matching support and c    105       SMMUs with stream matching support and complex masters may use a value of
179       2, where the second cell of the IOMMU sp    106       2, where the second cell of the IOMMU specifier represents an SMR mask to
180       combine with the ID in the first cell.      107       combine with the ID in the first cell.  Care must be taken to ensure the
181       set of matched IDs does not result in co    108       set of matched IDs does not result in conflicts.
182                                                   109 
183   interrupts:                                     110   interrupts:
184     minItems: 1                                   111     minItems: 1
185     maxItems: 388   # 260 plus 128 contexts       112     maxItems: 388   # 260 plus 128 contexts
186     description: |                                113     description: |
187       Interrupt list, with the first #global-i    114       Interrupt list, with the first #global-interrupts entries corresponding to
188       the global interrupts and any following     115       the global interrupts and any following entries corresponding to context
189       interrupts, specified in order of their     116       interrupts, specified in order of their indexing by the SMMU.
190                                                   117 
191       For SMMUv2 implementations, there must b    118       For SMMUv2 implementations, there must be exactly one interrupt per
192       context bank. In the case of a single, c    119       context bank. In the case of a single, combined interrupt, it must be
193       listed multiple times.                      120       listed multiple times.
194                                                   121 
195   dma-coherent:                                   122   dma-coherent:
196     description: |                                123     description: |
197       Present if page table walks made by the     124       Present if page table walks made by the SMMU are cache coherent with the
198       CPU.                                        125       CPU.
199                                                   126 
200       NOTE: this only applies to the SMMU itse    127       NOTE: this only applies to the SMMU itself, not masters connected
201       upstream of the SMMU.                       128       upstream of the SMMU.
202                                                   129 
203   calxeda,smmu-secure-config-access:              130   calxeda,smmu-secure-config-access:
204     type: boolean                                 131     type: boolean
205     description:                                  132     description:
206       Enable proper handling of buggy implemen    133       Enable proper handling of buggy implementations that always use secure
207       access to SMMU configuration registers.     134       access to SMMU configuration registers. In this case non-secure aliases of
208       secure registers have to be used during     135       secure registers have to be used during SMMU configuration.
209                                                   136 
210   stream-match-mask:                              137   stream-match-mask:
211     $ref: /schemas/types.yaml#/definitions/uin    138     $ref: /schemas/types.yaml#/definitions/uint32
212     description: |                                139     description: |
213       For SMMUs supporting stream matching and    140       For SMMUs supporting stream matching and using #iommu-cells = <1>,
214       specifies a mask of bits to ignore when     141       specifies a mask of bits to ignore when matching stream IDs (e.g. this may
215       be programmed into the SMRn.MASK field o    142       be programmed into the SMRn.MASK field of every stream match register
216       used). For cases where it is desirable t    143       used). For cases where it is desirable to ignore some portion of every
217       Stream ID (e.g. for certain MMU-500 conf    144       Stream ID (e.g. for certain MMU-500 configurations given globally unique
218       input IDs). This property is not valid f    145       input IDs). This property is not valid for SMMUs using stream indexing, or
219       using stream matching with #iommu-cells     146       using stream matching with #iommu-cells = <2>, and may be ignored if
220       present in such cases.                      147       present in such cases.
221                                                   148 
222   clock-names:                                    149   clock-names:
223     minItems: 1                                !! 150     items:
224     maxItems: 7                                !! 151       - const: bus
                                                   >> 152       - const: iface
225                                                   153 
226   clocks:                                         154   clocks:
227     minItems: 1                                !! 155     items:
228     maxItems: 7                                !! 156       - description: bus clock required for downstream bus access and for the
                                                   >> 157           smmu ptw
                                                   >> 158       - description: interface clock required to access smmu's registers
                                                   >> 159           through the TCU's programming interface.
229                                                   160 
230   power-domains:                                  161   power-domains:
231     minItems: 1                                !! 162     maxItems: 1
232     maxItems: 3                                << 
233                                                   163 
234   nvidia,memory-controller:                       164   nvidia,memory-controller:
235     description: |                                165     description: |
236       A phandle to the memory controller on NV    166       A phandle to the memory controller on NVIDIA Tegra186 and later SoCs.
237       The memory controller needs to be progra    167       The memory controller needs to be programmed with a mapping of memory
238       client IDs to ARM SMMU stream IDs.          168       client IDs to ARM SMMU stream IDs.
239                                                   169 
240       If this property is absent, the mapping     170       If this property is absent, the mapping programmed by early firmware
241       will be used and it is not guaranteed th    171       will be used and it is not guaranteed that IOMMU translations will be
242       enabled for any given device.               172       enabled for any given device.
243     $ref: /schemas/types.yaml#/definitions/pha    173     $ref: /schemas/types.yaml#/definitions/phandle
244                                                   174 
245 required:                                         175 required:
246   - compatible                                    176   - compatible
247   - reg                                           177   - reg
248   - '#global-interrupts'                          178   - '#global-interrupts'
249   - '#iommu-cells'                                179   - '#iommu-cells'
250   - interrupts                                    180   - interrupts
251                                                   181 
252 additionalProperties: false                       182 additionalProperties: false
253                                                   183 
254 allOf:                                            184 allOf:
255   - if:                                           185   - if:
256       properties:                                 186       properties:
257         compatible:                               187         compatible:
258           contains:                               188           contains:
259             enum:                                 189             enum:
260               - nvidia,tegra186-smmu              190               - nvidia,tegra186-smmu
261               - nvidia,tegra194-smmu              191               - nvidia,tegra194-smmu
262               - nvidia,tegra234-smmu              192               - nvidia,tegra234-smmu
263     then:                                         193     then:
264       properties:                                 194       properties:
265         reg:                                      195         reg:
266           minItems: 1                             196           minItems: 1
267           maxItems: 2                             197           maxItems: 2
268                                                   198 
269       # The reference to the memory controller    199       # The reference to the memory controller is required to ensure that the
270       # memory client to stream ID mapping can    200       # memory client to stream ID mapping can be done synchronously with the
271       # IOMMU attachment.                         201       # IOMMU attachment.
272       required:                                   202       required:
273         - nvidia,memory-controller                203         - nvidia,memory-controller
274     else:                                         204     else:
275       properties:                                 205       properties:
276         reg:                                      206         reg:
277           maxItems: 1                          << 
278                                                << 
279   - if:                                        << 
280       properties:                              << 
281         compatible:                            << 
282           contains:                            << 
283             enum:                              << 
284               - qcom,msm8998-smmu-v2           << 
285               - qcom,sdm630-smmu-v2            << 
286     then:                                      << 
287       anyOf:                                   << 
288         - properties:                          << 
289             clock-names:                       << 
290               items:                           << 
291                 - const: bus                   << 
292             clocks:                            << 
293               items:                           << 
294                 - description: bus clock requi << 
295                     the smmu ptw               << 
296         - properties:                          << 
297             clock-names:                       << 
298               items:                           << 
299                 - const: iface                 << 
300                 - const: mem                   << 
301                 - const: mem_iface             << 
302             clocks:                            << 
303               items:                           << 
304                 - description: interface clock << 
305                     through the TCU's programm << 
306                 - description: bus clock requi << 
307                 - description: bus clock requi << 
308         - properties:                          << 
309             clock-names:                       << 
310               items:                           << 
311                 - const: iface-mm              << 
312                 - const: iface-smmu            << 
313                 - const: bus-smmu              << 
314             clocks:                            << 
315               items:                           << 
316                 - description: interface clock << 
317                     through the TCU's programm << 
318                 - description: interface clock << 
319                     through the TCU's programm << 
320                 - description: bus clock requi << 
321                                                << 
322   - if:                                        << 
323       properties:                              << 
324         compatible:                            << 
325           contains:                            << 
326             enum:                              << 
327               - qcom,sm6375-smmu-v2            << 
328     then:                                      << 
329       anyOf:                                   << 
330         - properties:                          << 
331             clock-names:                       << 
332               items:                           << 
333                 - const: bus                   << 
334             clocks:                            << 
335               items:                           << 
336                 - description: bus clock requi << 
337                     the smmu ptw               << 
338         - properties:                          << 
339             clock-names:                       << 
340               items:                           << 
341                 - const: iface                 << 
342                 - const: mem                   << 
343                 - const: mem_iface             << 
344             clocks:                            << 
345               items:                           << 
346                 - description: interface clock << 
347                     through the TCU's programm << 
348                 - description: bus clock requi << 
349                 - description: bus clock requi << 
350         - properties:                          << 
351             clock-names:                       << 
352               items:                           << 
353                 - const: iface-mm              << 
354                 - const: iface-smmu            << 
355                 - const: bus-mm                << 
356                 - const: bus-smmu              << 
357             clocks:                            << 
358               items:                           << 
359                 - description: interface clock << 
360                     through the TCU's programm << 
361                 - description: interface clock << 
362                     through the TCU's programm << 
363                 - description: bus clock requi << 
364                 - description: bus clock requi << 
365                                                << 
366   - if:                                        << 
367       properties:                              << 
368         compatible:                            << 
369           contains:                            << 
370             enum:                              << 
371               - qcom,msm8996-smmu-v2           << 
372               - qcom,sc7180-smmu-v2            << 
373               - qcom,sdm845-smmu-v2            << 
374     then:                                      << 
375       properties:                              << 
376         clock-names:                           << 
377           items:                               << 
378             - const: bus                       << 
379             - const: iface                     << 
380                                                << 
381         clocks:                                << 
382           items:                               << 
383             - description: bus clock required  << 
384                 the smmu ptw                   << 
385             - description: interface clock req << 
386                 through the TCU's programming  << 
387                                                << 
388   - if:                                        << 
389       properties:                              << 
390         compatible:                            << 
391           contains:                            << 
392             enum:                              << 
393               - qcom,sa8775p-smmu-500          << 
394               - qcom,sc7280-smmu-500           << 
395               - qcom,sc8280xp-smmu-500         << 
396     then:                                      << 
397       properties:                              << 
398         clock-names:                           << 
399           items:                               << 
400             - const: gcc_gpu_memnoc_gfx_clk    << 
401             - const: gcc_gpu_snoc_dvm_gfx_clk  << 
402             - const: gpu_cc_ahb_clk            << 
403             - const: gpu_cc_hlos1_vote_gpu_smm << 
404             - const: gpu_cc_cx_gmu_clk         << 
405             - const: gpu_cc_hub_cx_int_clk     << 
406             - const: gpu_cc_hub_aon_clk        << 
407                                                << 
408         clocks:                                << 
409           items:                               << 
410             - description: GPU memnoc_gfx cloc << 
411             - description: GPU snoc_dvm_gfx cl << 
412             - description: GPU ahb clock       << 
413             - description: GPU hlos1_vote_GPU  << 
414             - description: GPU cx_gmu clock    << 
415             - description: GPU hub_cx_int cloc << 
416             - description: GPU hub_aon clock   << 
417                                                << 
418   - if:                                        << 
419       properties:                              << 
420         compatible:                            << 
421           contains:                            << 
422             enum:                              << 
423               - qcom,sc8180x-smmu-500          << 
424               - qcom,sm6350-smmu-v2            << 
425               - qcom,sm7150-smmu-v2            << 
426               - qcom,sm8150-smmu-500           << 
427               - qcom,sm8250-smmu-500           << 
428     then:                                      << 
429       properties:                              << 
430         clock-names:                           << 
431           items:                               << 
432             - const: ahb                       << 
433             - const: bus                       << 
434             - const: iface                     << 
435                                                << 
436         clocks:                                << 
437           items:                               << 
438             - description: bus clock required  << 
439             - description: bus clock required  << 
440                 the smmu ptw                   << 
441             - description: interface clock req << 
442                 through the TCU's programming  << 
443                                                << 
444   - if:                                        << 
445       properties:                              << 
446         compatible:                            << 
447           items:                               << 
448             - enum:                            << 
449                 - qcom,sm8350-smmu-500         << 
450             - const: qcom,adreno-smmu          << 
451             - const: qcom,smmu-500             << 
452             - const: arm,mmu-500               << 
453     then:                                      << 
454       properties:                              << 
455         clock-names:                           << 
456           items:                               << 
457             - const: bus                       << 
458             - const: iface                     << 
459             - const: ahb                       << 
460             - const: hlos1_vote_gpu_smmu       << 
461             - const: cx_gmu                    << 
462             - const: hub_cx_int                << 
463             - const: hub_aon                   << 
464         clocks:                                << 
465           minItems: 7                          << 
466           maxItems: 7                          << 
467                                                << 
468   - if:                                        << 
469       properties:                              << 
470         compatible:                            << 
471           items:                               << 
472             - enum:                            << 
473                 - qcom,qcm2290-smmu-500        << 
474                 - qcom,sm6115-smmu-500         << 
475                 - qcom,sm6125-smmu-500         << 
476             - const: qcom,adreno-smmu          << 
477             - const: qcom,smmu-500             << 
478             - const: arm,mmu-500               << 
479     then:                                      << 
480       properties:                              << 
481         clock-names:                           << 
482           items:                               << 
483             - const: mem                       << 
484             - const: hlos                      << 
485             - const: iface                     << 
486                                                << 
487         clocks:                                << 
488           items:                               << 
489             - description: GPU memory bus cloc << 
490             - description: Voter clock require << 
491             - description: Interface clock req << 
492                                                << 
493   - if:                                        << 
494       properties:                              << 
495         compatible:                            << 
496           items:                               << 
497             - const: qcom,sm8450-smmu-500      << 
498             - const: qcom,adreno-smmu          << 
499             - const: qcom,smmu-500             << 
500             - const: arm,mmu-500               << 
501                                                << 
502     then:                                      << 
503       properties:                              << 
504         clock-names:                           << 
505           items:                               << 
506             - const: gmu                       << 
507             - const: hub                       << 
508             - const: hlos                      << 
509             - const: bus                       << 
510             - const: iface                     << 
511             - const: ahb                       << 
512                                                << 
513         clocks:                                << 
514           items:                               << 
515             - description: GMU clock           << 
516             - description: GPU HUB clock       << 
517             - description: HLOS vote clock     << 
518             - description: GPU memory bus cloc << 
519             - description: GPU SNoC bus clock  << 
520             - description: GPU AHB clock       << 
521                                                << 
522   - if:                                        << 
523       properties:                              << 
524         compatible:                            << 
525           items:                               << 
526             - enum:                            << 
527                 - qcom,sm8550-smmu-500         << 
528                 - qcom,sm8650-smmu-500         << 
529                 - qcom,x1e80100-smmu-500       << 
530             - const: qcom,adreno-smmu          << 
531             - const: qcom,smmu-500             << 
532             - const: arm,mmu-500               << 
533     then:                                      << 
534       properties:                              << 
535         clock-names:                           << 
536           items:                               << 
537             - const: hlos                      << 
538             - const: bus                       << 
539             - const: iface                     << 
540             - const: ahb                       << 
541                                                << 
542         clocks:                                << 
543           items:                               << 
544             - description: HLOS vote clock     << 
545             - description: GPU memory bus cloc << 
546             - description: GPU SNoC bus clock  << 
547             - description: GPU AHB clock       << 
548                                                << 
549   # Disallow clocks for all other platforms wi << 
550   - if:                                        << 
551       properties:                              << 
552         compatible:                            << 
553           contains:                            << 
554             enum:                              << 
555               - cavium,smmu-v2                 << 
556               - marvell,ap806-smmu-500         << 
557               - nvidia,smmu-500                << 
558               - qcom,qcs8300-smmu-500          << 
559               - qcom,qdu1000-smmu-500          << 
560               - qcom,sa8255p-smmu-500          << 
561               - qcom,sc7180-smmu-500           << 
562               - qcom,sdm670-smmu-500           << 
563               - qcom,sdm845-smmu-500           << 
564               - qcom,sdx55-smmu-500            << 
565               - qcom,sdx65-smmu-500            << 
566               - qcom,sm6350-smmu-500           << 
567               - qcom,sm6375-smmu-500           << 
568     then:                                      << 
569       properties:                              << 
570         clock-names: false                     << 
571         clocks: false                          << 
572                                                << 
573   - if:                                        << 
574       properties:                              << 
575         compatible:                            << 
576           contains:                            << 
577             const: qcom,sm6375-smmu-500        << 
578     then:                                      << 
579       properties:                              << 
580         power-domains:                         << 
581           items:                               << 
582             - description: SNoC MMU TBU RT GDS << 
583             - description: SNoC MMU TBU NRT GD << 
584             - description: SNoC TURING MMU TBU << 
585                                                << 
586       required:                                << 
587         - power-domains                        << 
588     else:                                      << 
589       properties:                              << 
590         power-domains:                         << 
591           maxItems: 1                             207           maxItems: 1
592                                                   208 
593 examples:                                         209 examples:
594   - |+                                            210   - |+
595     /* SMMU with stream matching or stream ind    211     /* SMMU with stream matching or stream indexing */
596     smmu1: iommu@ba5e0000 {                       212     smmu1: iommu@ba5e0000 {
597             compatible = "arm,smmu-v1";           213             compatible = "arm,smmu-v1";
598             reg = <0xba5e0000 0x10000>;           214             reg = <0xba5e0000 0x10000>;
599             #global-interrupts = <2>;             215             #global-interrupts = <2>;
600             interrupts = <0 32 4>,                216             interrupts = <0 32 4>,
601                          <0 33 4>,                217                          <0 33 4>,
602                          <0 34 4>, /* This is     218                          <0 34 4>, /* This is the first context interrupt */
603                          <0 35 4>,                219                          <0 35 4>,
604                          <0 36 4>,                220                          <0 36 4>,
605                          <0 37 4>;                221                          <0 37 4>;
606             #iommu-cells = <1>;                   222             #iommu-cells = <1>;
607     };                                            223     };
608                                                   224 
609     /* device with two stream IDs, 0 and 7 */     225     /* device with two stream IDs, 0 and 7 */
610     master1 {                                     226     master1 {
611             iommus = <&smmu1 0>,                  227             iommus = <&smmu1 0>,
612                      <&smmu1 7>;                  228                      <&smmu1 7>;
613     };                                            229     };
614                                                   230 
615                                                   231 
616     /* SMMU with stream matching */               232     /* SMMU with stream matching */
617     smmu2: iommu@ba5f0000 {                       233     smmu2: iommu@ba5f0000 {
618             compatible = "arm,smmu-v1";           234             compatible = "arm,smmu-v1";
619             reg = <0xba5f0000 0x10000>;           235             reg = <0xba5f0000 0x10000>;
620             #global-interrupts = <2>;             236             #global-interrupts = <2>;
621             interrupts = <0 38 4>,                237             interrupts = <0 38 4>,
622                          <0 39 4>,                238                          <0 39 4>,
623                          <0 40 4>, /* This is     239                          <0 40 4>, /* This is the first context interrupt */
624                          <0 41 4>,                240                          <0 41 4>,
625                          <0 42 4>,                241                          <0 42 4>,
626                          <0 43 4>;                242                          <0 43 4>;
627             #iommu-cells = <2>;                   243             #iommu-cells = <2>;
628     };                                            244     };
629                                                   245 
630     /* device with stream IDs 0 and 7 */          246     /* device with stream IDs 0 and 7 */
631     master2 {                                     247     master2 {
632             iommus = <&smmu2 0 0>,                248             iommus = <&smmu2 0 0>,
633                      <&smmu2 7 0>;                249                      <&smmu2 7 0>;
634     };                                            250     };
635                                                   251 
636     /* device with stream IDs 1, 17, 33 and 49    252     /* device with stream IDs 1, 17, 33 and 49 */
637     master3 {                                     253     master3 {
638             iommus = <&smmu2 1 0x30>;             254             iommus = <&smmu2 1 0x30>;
639     };                                            255     };
640                                                   256 
641                                                   257 
642     /* ARM MMU-500 with 10-bit stream ID input    258     /* ARM MMU-500 with 10-bit stream ID input configuration */
643     smmu3: iommu@ba600000 {                       259     smmu3: iommu@ba600000 {
644             compatible = "arm,mmu-500", "arm,s    260             compatible = "arm,mmu-500", "arm,smmu-v2";
645             reg = <0xba600000 0x10000>;           261             reg = <0xba600000 0x10000>;
646             #global-interrupts = <2>;             262             #global-interrupts = <2>;
647             interrupts = <0 44 4>,                263             interrupts = <0 44 4>,
648                          <0 45 4>,                264                          <0 45 4>,
649                          <0 46 4>, /* This is     265                          <0 46 4>, /* This is the first context interrupt */
650                          <0 47 4>,                266                          <0 47 4>,
651                          <0 48 4>,                267                          <0 48 4>,
652                          <0 49 4>;                268                          <0 49 4>;
653             #iommu-cells = <1>;                   269             #iommu-cells = <1>;
654             /* always ignore appended 5-bit TB    270             /* always ignore appended 5-bit TBU number */
655             stream-match-mask = <0x7c00>;         271             stream-match-mask = <0x7c00>;
656     };                                            272     };
657                                                   273 
658     bus {                                         274     bus {
659             /* bus whose child devices emit on    275             /* bus whose child devices emit one unique 10-bit stream
660                ID each, but may master through    276                ID each, but may master through multiple SMMU TBUs */
661             iommu-map = <0 &smmu3 0 0x400>;       277             iommu-map = <0 &smmu3 0 0x400>;
662                                                   278 
663                                                   279 
664     };                                            280     };
665                                                   281 
666   - |+                                            282   - |+
667     /* Qcom's arm,smmu-v2 implementation */       283     /* Qcom's arm,smmu-v2 implementation */
668     #include <dt-bindings/interrupt-controller    284     #include <dt-bindings/interrupt-controller/arm-gic.h>
669     #include <dt-bindings/interrupt-controller    285     #include <dt-bindings/interrupt-controller/irq.h>
670     smmu4: iommu@d00000 {                         286     smmu4: iommu@d00000 {
671       compatible = "qcom,msm8996-smmu-v2", "qc    287       compatible = "qcom,msm8996-smmu-v2", "qcom,smmu-v2";
672       reg = <0xd00000 0x10000>;                   288       reg = <0xd00000 0x10000>;
673                                                   289 
674       #global-interrupts = <1>;                   290       #global-interrupts = <1>;
675       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_    291       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
676              <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>    292              <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
677              <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>    293              <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
678       #iommu-cells = <1>;                         294       #iommu-cells = <1>;
679       power-domains = <&mmcc 0>;                  295       power-domains = <&mmcc 0>;
680                                                   296 
681       clocks = <&mmcc 123>,                       297       clocks = <&mmcc 123>,
682         <&mmcc 124>;                              298         <&mmcc 124>;
683       clock-names = "bus", "iface";               299       clock-names = "bus", "iface";
684     };                                            300     };
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php