| * 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 |