~ [ 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.3.13)


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

~ [ 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