| * virtio memory mapped device | 
|   | 
| See https://ozlabs.org/~rusty/virtio-spec/ for more details. | 
|   | 
| Required properties: | 
|   | 
| - compatible:    "virtio,mmio" compatibility string | 
| - reg:        control registers base address and size including configuration space | 
| - interrupts:    interrupt generated by the device | 
|   | 
| Required properties for virtio-iommu: | 
|   | 
| - #iommu-cells:    When the node corresponds to a virtio-iommu device, it is | 
|         linked to DMA masters using the "iommus" or "iommu-map" | 
|         properties [1][2]. #iommu-cells specifies the size of the | 
|         "iommus" property. For virtio-iommu #iommu-cells must be | 
|         1, each cell describing a single endpoint ID. | 
|   | 
| Optional properties: | 
|   | 
| - iommus:    If the device accesses memory through an IOMMU, it should | 
|         have an "iommus" property [1]. Since virtio-iommu itself | 
|         does not access memory through an IOMMU, the "virtio,mmio" | 
|         node cannot have both an "#iommu-cells" and an "iommus" | 
|         property. | 
|   | 
| Example: | 
|   | 
|     virtio_block@3000 { | 
|         compatible = "virtio,mmio"; | 
|         reg = <0x3000 0x100>; | 
|         interrupts = <41>; | 
|   | 
|         /* Device has endpoint ID 23 */ | 
|         iommus = <&viommu 23> | 
|     } | 
|   | 
|     viommu: iommu@3100 { | 
|         compatible = "virtio,mmio"; | 
|         reg = <0x3100 0x100>; | 
|         interrupts = <42>; | 
|   | 
|         #iommu-cells = <1> | 
|     } | 
|   | 
| [1] Documentation/devicetree/bindings/iommu/iommu.txt | 
| [2] Documentation/devicetree/bindings/pci/pci-iommu.txt |