1* virtio memory mapped device 2 3See https://ozlabs.org/~rusty/virtio-spec/ for more details. 4 5Required 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 11Required 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 19Optional 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 27Example: 28 29 virtio_block@3000 { 30 compatible = "virtio,mmio"; 31 reg = <0x3000 0x100>; 32 interrupts = <41>; 33 34 /* Device has endpoint ID 23 */ 35 iommus = <&viommu 23> 36 } 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 48