Commit | Line | Data |
---|---|---|
edfd52e6 PM |
1 | * virtio memory mapped device |
2 | ||
8f92f680 | 3 | See https://ozlabs.org/~rusty/virtio-spec/ for more details. |
edfd52e6 PM |
4 | |
5 | Required properties: | |
6 | ||
7 | - compatible: "virtio,mmio" compatibility string | |
8 | - reg: control registers base address and size including configuration space | |
9 | - interrupts: interrupt generated by the device | |
10 | ||
8447d84e JPB |
11 | Required properties for virtio-iommu: |
12 | ||
13 | - #iommu-cells: When the node corresponds to a virtio-iommu device, it is | |
14 | linked to DMA masters using the "iommus" or "iommu-map" | |
15 | properties [1][2]. #iommu-cells specifies the size of the | |
16 | "iommus" property. For virtio-iommu #iommu-cells must be | |
17 | 1, each cell describing a single endpoint ID. | |
18 | ||
19 | Optional properties: | |
20 | ||
21 | - iommus: If the device accesses memory through an IOMMU, it should | |
22 | have an "iommus" property [1]. Since virtio-iommu itself | |
23 | does not access memory through an IOMMU, the "virtio,mmio" | |
24 | node cannot have both an "#iommu-cells" and an "iommus" | |
25 | property. | |
26 | ||
edfd52e6 PM |
27 | Example: |
28 | ||
29 | virtio_block@3000 { | |
30 | compatible = "virtio,mmio"; | |
31 | reg = <0x3000 0x100>; | |
32 | interrupts = <41>; | |
8447d84e JPB |
33 | |
34 | /* Device has endpoint ID 23 */ | |
35 | iommus = <&viommu 23> | |
edfd52e6 | 36 | } |
8447d84e JPB |
37 | |
38 | viommu: iommu@3100 { | |
39 | compatible = "virtio,mmio"; | |
40 | reg = <0x3100 0x100>; | |
41 | interrupts = <42>; | |
42 | ||
43 | #iommu-cells = <1> | |
44 | } | |
45 | ||
46 | [1] Documentation/devicetree/bindings/iommu/iommu.txt | |
47 | [2] Documentation/devicetree/bindings/pci/pci-iommu.txt |