xref: /openbmc/linux/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1b5c8c6deSRob Herring# SPDX-License-Identifier: GPL-2.0-only
2b5c8c6deSRob Herring%YAML 1.2
3b5c8c6deSRob Herring---
4b5c8c6deSRob Herring$id: http://devicetree.org/schemas/iommu/arm,smmu-v3.yaml#
5b5c8c6deSRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
6b5c8c6deSRob Herring
7b5c8c6deSRob Herringtitle: ARM SMMUv3 Architecture Implementation
8b5c8c6deSRob Herring
9b5c8c6deSRob Herringmaintainers:
10b5c8c6deSRob Herring  - Will Deacon <will@kernel.org>
11b5c8c6deSRob Herring  - Robin Murphy <Robin.Murphy@arm.com>
12b5c8c6deSRob Herring
13b5c8c6deSRob Herringdescription: |+
14b5c8c6deSRob Herring  The SMMUv3 architecture is a significant departure from previous
15b5c8c6deSRob Herring  revisions, replacing the MMIO register interface with in-memory command
16b5c8c6deSRob Herring  and event queues and adding support for the ATS and PRI components of
17b5c8c6deSRob Herring  the PCIe specification.
18b5c8c6deSRob Herring
19b5c8c6deSRob Herringproperties:
20b5c8c6deSRob Herring  $nodename:
21b5c8c6deSRob Herring    pattern: "^iommu@[0-9a-f]*"
22b5c8c6deSRob Herring  compatible:
23b5c8c6deSRob Herring    const: arm,smmu-v3
24b5c8c6deSRob Herring
25b5c8c6deSRob Herring  reg:
26b5c8c6deSRob Herring    maxItems: 1
27b5c8c6deSRob Herring
28b5c8c6deSRob Herring  interrupts:
29b5c8c6deSRob Herring    minItems: 1
30b5c8c6deSRob Herring    maxItems: 4
31b5c8c6deSRob Herring
32b5c8c6deSRob Herring  interrupt-names:
33b5c8c6deSRob Herring    oneOf:
34b5c8c6deSRob Herring      - const: combined
35b5c8c6deSRob Herring        description:
36b5c8c6deSRob Herring          The combined interrupt is optional, and should only be provided if the
37b5c8c6deSRob Herring          hardware supports just a single, combined interrupt line.
38b5c8c6deSRob Herring          If provided, then the combined interrupt will be used in preference to
39b5c8c6deSRob Herring          any others.
40e4783856SAndre Przywara      - minItems: 1
41b5c8c6deSRob Herring        items:
42*d2f2f1d1SJean-Philippe Brucker          enum:
43e4783856SAndre Przywara            - eventq      # Event Queue not empty
44e4783856SAndre Przywara            - gerror      # Global Error activated
45e4783856SAndre Przywara            - cmdq-sync   # CMD_SYNC complete
46e4783856SAndre Przywara            - priq        # PRI Queue not empty
47b5c8c6deSRob Herring
48b5c8c6deSRob Herring  '#iommu-cells':
49b5c8c6deSRob Herring    const: 1
50b5c8c6deSRob Herring
51b5c8c6deSRob Herring  dma-coherent:
52b5c8c6deSRob Herring    description: |
53b5c8c6deSRob Herring      Present if page table walks made by the SMMU are cache coherent with the
54b5c8c6deSRob Herring      CPU.
55b5c8c6deSRob Herring
56b5c8c6deSRob Herring      NOTE: this only applies to the SMMU itself, not masters connected
57b5c8c6deSRob Herring      upstream of the SMMU.
58b5c8c6deSRob Herring
59b5c8c6deSRob Herring  msi-parent: true
60b5c8c6deSRob Herring
61b5c8c6deSRob Herring  hisilicon,broken-prefetch-cmd:
62b5c8c6deSRob Herring    type: boolean
63b5c8c6deSRob Herring    description: Avoid sending CMD_PREFETCH_* commands to the SMMU.
64b5c8c6deSRob Herring
65b5c8c6deSRob Herring  cavium,cn9900-broken-page1-regspace:
66b5c8c6deSRob Herring    type: boolean
67b5c8c6deSRob Herring    description:
68b5c8c6deSRob Herring      Replaces all page 1 offsets used for EVTQ_PROD/CONS, PRIQ_PROD/CONS
69b5c8c6deSRob Herring      register access with page 0 offsets. Set for Cavium ThunderX2 silicon that
70b5c8c6deSRob Herring      doesn't support SMMU page1 register space.
71b5c8c6deSRob Herring
72b5c8c6deSRob Herringrequired:
73b5c8c6deSRob Herring  - compatible
74b5c8c6deSRob Herring  - reg
75b5c8c6deSRob Herring  - '#iommu-cells'
76b5c8c6deSRob Herring
77b5c8c6deSRob HerringadditionalProperties: false
78b5c8c6deSRob Herring
79b5c8c6deSRob Herringexamples:
80b5c8c6deSRob Herring  - |+
81b5c8c6deSRob Herring    #include <dt-bindings/interrupt-controller/arm-gic.h>
82b5c8c6deSRob Herring    #include <dt-bindings/interrupt-controller/irq.h>
83b5c8c6deSRob Herring
84b5c8c6deSRob Herring    iommu@2b400000 {
85b5c8c6deSRob Herring            compatible = "arm,smmu-v3";
86b5c8c6deSRob Herring            reg = <0x2b400000 0x20000>;
87b5c8c6deSRob Herring            interrupts = <GIC_SPI 74 IRQ_TYPE_EDGE_RISING>,
88b5c8c6deSRob Herring                         <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>,
89b5c8c6deSRob Herring                         <GIC_SPI 77 IRQ_TYPE_EDGE_RISING>,
90b5c8c6deSRob Herring                         <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>;
91b5c8c6deSRob Herring            interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
92b5c8c6deSRob Herring            dma-coherent;
93b5c8c6deSRob Herring            #iommu-cells = <1>;
94b5c8c6deSRob Herring            msi-parent = <&its 0xff0000>;
95b5c8c6deSRob Herring    };
96