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


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

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