xref: /linux/Documentation/devicetree/bindings/iommu/apple,dart.yaml (revision 9d9cafb45c71c9fe302234807fae8f743056f88a)
1*9d9cafb4SSven Peter# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*9d9cafb4SSven Peter%YAML 1.2
3*9d9cafb4SSven Peter---
4*9d9cafb4SSven Peter$id: http://devicetree.org/schemas/iommu/apple,dart.yaml#
5*9d9cafb4SSven Peter$schema: http://devicetree.org/meta-schemas/core.yaml#
6*9d9cafb4SSven Peter
7*9d9cafb4SSven Petertitle: Apple DART IOMMU
8*9d9cafb4SSven Peter
9*9d9cafb4SSven Petermaintainers:
10*9d9cafb4SSven Peter  - Sven Peter <sven@svenpeter.dev>
11*9d9cafb4SSven Peter
12*9d9cafb4SSven Peterdescription: |+
13*9d9cafb4SSven Peter  Apple SoCs may contain an implementation of their Device Address
14*9d9cafb4SSven Peter  Resolution Table which provides a mandatory layer of address
15*9d9cafb4SSven Peter  translations for various masters.
16*9d9cafb4SSven Peter
17*9d9cafb4SSven Peter  Each DART instance is capable of handling up to 16 different streams
18*9d9cafb4SSven Peter  with individual pagetables and page-level read/write protection flags.
19*9d9cafb4SSven Peter
20*9d9cafb4SSven Peter  This DART IOMMU also raises interrupts in response to various
21*9d9cafb4SSven Peter  fault conditions.
22*9d9cafb4SSven Peter
23*9d9cafb4SSven Peterproperties:
24*9d9cafb4SSven Peter  compatible:
25*9d9cafb4SSven Peter    const: apple,t8103-dart
26*9d9cafb4SSven Peter
27*9d9cafb4SSven Peter  reg:
28*9d9cafb4SSven Peter    maxItems: 1
29*9d9cafb4SSven Peter
30*9d9cafb4SSven Peter  interrupts:
31*9d9cafb4SSven Peter    maxItems: 1
32*9d9cafb4SSven Peter
33*9d9cafb4SSven Peter  clocks:
34*9d9cafb4SSven Peter    description:
35*9d9cafb4SSven Peter      Reference to the gate clock phandle if required for this IOMMU.
36*9d9cafb4SSven Peter      Optional since not all IOMMUs are attached to a clock gate.
37*9d9cafb4SSven Peter
38*9d9cafb4SSven Peter  '#iommu-cells':
39*9d9cafb4SSven Peter    const: 1
40*9d9cafb4SSven Peter    description:
41*9d9cafb4SSven Peter      Has to be one. The single cell describes the stream id emitted by
42*9d9cafb4SSven Peter      a master to the IOMMU.
43*9d9cafb4SSven Peter
44*9d9cafb4SSven Peterrequired:
45*9d9cafb4SSven Peter  - compatible
46*9d9cafb4SSven Peter  - reg
47*9d9cafb4SSven Peter  - '#iommu-cells'
48*9d9cafb4SSven Peter  - interrupts
49*9d9cafb4SSven Peter
50*9d9cafb4SSven PeteradditionalProperties: false
51*9d9cafb4SSven Peter
52*9d9cafb4SSven Peterexamples:
53*9d9cafb4SSven Peter  - |+
54*9d9cafb4SSven Peter    dart1: iommu@82f80000 {
55*9d9cafb4SSven Peter      compatible = "apple,t8103-dart";
56*9d9cafb4SSven Peter      reg = <0x82f80000 0x4000>;
57*9d9cafb4SSven Peter      interrupts = <1 781 4>;
58*9d9cafb4SSven Peter      #iommu-cells = <1>;
59*9d9cafb4SSven Peter    };
60*9d9cafb4SSven Peter
61*9d9cafb4SSven Peter    master1 {
62*9d9cafb4SSven Peter      iommus = <&dart1 0>;
63*9d9cafb4SSven Peter    };
64*9d9cafb4SSven Peter
65*9d9cafb4SSven Peter  - |+
66*9d9cafb4SSven Peter    dart2a: iommu@82f00000 {
67*9d9cafb4SSven Peter      compatible = "apple,t8103-dart";
68*9d9cafb4SSven Peter      reg = <0x82f00000 0x4000>;
69*9d9cafb4SSven Peter      interrupts = <1 781 4>;
70*9d9cafb4SSven Peter      #iommu-cells = <1>;
71*9d9cafb4SSven Peter    };
72*9d9cafb4SSven Peter    dart2b: iommu@82f80000 {
73*9d9cafb4SSven Peter      compatible = "apple,t8103-dart";
74*9d9cafb4SSven Peter      reg = <0x82f80000 0x4000>;
75*9d9cafb4SSven Peter      interrupts = <1 781 4>;
76*9d9cafb4SSven Peter      #iommu-cells = <1>;
77*9d9cafb4SSven Peter    };
78*9d9cafb4SSven Peter
79*9d9cafb4SSven Peter    master2 {
80*9d9cafb4SSven Peter      iommus = <&dart2a 0>, <&dart2b 1>;
81*9d9cafb4SSven Peter    };
82