IOMMU Domains An IOMMU domain is a collection of IOMMU context banks and an optional virtual address space that is to be used with the domain. Domains that are defined will be created at bootup and associated with an iommu group. Clients can then refer to the iommu group and perform operations on the iommu group instead of individual devices/contexts. Required properties - compatible: "qcom,iommu-domains" - At least one child that defines a domain is required with the following properties: - label: Name of the domain - qcom,iommu-contexts: List of phandles to context that belongs to this domain. Optional properties - qcom,virtual-addr-pool: List of pairs that define the virtual address space for this domain. - qcom,secure-domain: boolean indicating that this is a secure domain that is to be programmed by Trustzone. - qcom,l2-redirect: boolean indicating that page tables should be cached in L2 cache. Example: qcom,iommu-domains { compatible = "qcom,iommu-domains"; qcom,iommu-domain1 { label = "lpass_secure"; qcom,iommu-contexts = <&lpass_q6_fw>; qcom,virtual-addr-pool = <0x00000000 0x0FFFFFFF 0xF0000000 0x0FFFFFFF>; }; qcom,iommu-domain2 { label = "lpass_audio"; qcom,iommu-contexts = <&lpass_audio_shared>; qcom,virtual-addr-pool = <0x10000000 0x0FFFFFFF>; }; qcom,iommu-domain3 { label = "lpass_video"; qcom,iommu-contexts = <&lpass_video_shared>; qcom,virtual-addr-pool = <0x20000000 0x0FFFFFFF>; }; };