xref: /freebsd/sys/contrib/device-tree/Bindings/iommu/apple,sart.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
1d5b0e70fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2d5b0e70fSEmmanuel Vadot%YAML 1.2
3d5b0e70fSEmmanuel Vadot---
4d5b0e70fSEmmanuel Vadot$id: http://devicetree.org/schemas/iommu/apple,sart.yaml#
5d5b0e70fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6d5b0e70fSEmmanuel Vadot
7d5b0e70fSEmmanuel Vadottitle: Apple SART DMA address filter
8d5b0e70fSEmmanuel Vadot
9d5b0e70fSEmmanuel Vadotmaintainers:
10d5b0e70fSEmmanuel Vadot  - Sven Peter <sven@svenpeter.dev>
11d5b0e70fSEmmanuel Vadot
12d5b0e70fSEmmanuel Vadotdescription:
13d5b0e70fSEmmanuel Vadot  Apple SART is a simple address filter for DMA transactions. Regions of
14d5b0e70fSEmmanuel Vadot  physical memory must be added to the SART's allow list before any
15d5b0e70fSEmmanuel Vadot  DMA can target these. Unlike a proper IOMMU no remapping can be done and
16d5b0e70fSEmmanuel Vadot  special support in the consumer driver is required since not all DMA
17d5b0e70fSEmmanuel Vadot  transactions of a single device are subject to SART filtering.
18d5b0e70fSEmmanuel Vadot
19d5b0e70fSEmmanuel Vadot  SART1 has first been used since at least the A11 (iPhone 8 and iPhone X)
20d5b0e70fSEmmanuel Vadot  and allows 36 bit of physical address space and filter entries with sizes
21d5b0e70fSEmmanuel Vadot  up to 24 bit.
22d5b0e70fSEmmanuel Vadot
23d5b0e70fSEmmanuel Vadot  SART2, first seen in A14 and M1, allows 36 bit of physical address space
24d5b0e70fSEmmanuel Vadot  and filter entry size up to 36 bit.
25d5b0e70fSEmmanuel Vadot
26d5b0e70fSEmmanuel Vadot  SART3, first seen in M1 Pro/Max, extends both the address space and filter
27d5b0e70fSEmmanuel Vadot  entry size to 42 bit.
28d5b0e70fSEmmanuel Vadot
29d5b0e70fSEmmanuel Vadotproperties:
30d5b0e70fSEmmanuel Vadot  compatible:
31*fac71e4eSEmmanuel Vadot    oneOf:
32*fac71e4eSEmmanuel Vadot      - items:
33*fac71e4eSEmmanuel Vadot          - const: apple,t8112-sart
34*fac71e4eSEmmanuel Vadot          - const: apple,t6000-sart
35*fac71e4eSEmmanuel Vadot      - enum:
36d5b0e70fSEmmanuel Vadot          - apple,t6000-sart
37d5b0e70fSEmmanuel Vadot          - apple,t8103-sart
38d5b0e70fSEmmanuel Vadot
39d5b0e70fSEmmanuel Vadot  reg:
40d5b0e70fSEmmanuel Vadot    maxItems: 1
41d5b0e70fSEmmanuel Vadot
42d5b0e70fSEmmanuel Vadot  power-domains:
43d5b0e70fSEmmanuel Vadot    maxItems: 1
44d5b0e70fSEmmanuel Vadot
45d5b0e70fSEmmanuel Vadotrequired:
46d5b0e70fSEmmanuel Vadot  - compatible
47d5b0e70fSEmmanuel Vadot  - reg
48d5b0e70fSEmmanuel Vadot
49d5b0e70fSEmmanuel VadotadditionalProperties: false
50d5b0e70fSEmmanuel Vadot
51d5b0e70fSEmmanuel Vadotexamples:
52d5b0e70fSEmmanuel Vadot  - |
53d5b0e70fSEmmanuel Vadot    iommu@7bc50000 {
54d5b0e70fSEmmanuel Vadot      compatible = "apple,t8103-sart";
55d5b0e70fSEmmanuel Vadot      reg = <0x7bc50000 0x4000>;
56d5b0e70fSEmmanuel Vadot    };
57