~ [ 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 (Architecture i386) and /Documentation/devicetree/bindings/iommu/arm,smmu.yaml (Architecture m68k)


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

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